无法推送到Gitlab注册表| Quarkus-Jib版本

时间:2020-09-09 14:03:18

标签: gitlab containers gitlab-ci quarkus jib

我目前正在开发Quarkus应用程序,因此需要CI管道+容器注册表。

由于无法通过Docker进行容器化(docker daemon-特权模式),我想使用Jib,它已被Quarkus支持。

管道中的命令:

- mvn clean package 
-Dquarkus.container-image.push=true 
-Dquarkus.container-image.registry="https://$registry" 
-Dquarkus.container-image.username=$username 
-Dquarkus.container-image.password=$deployToken 
-Dquarkus.container-image.name=(group)/(project)
  • 用户名=部署令牌用户名
  • 密码=部署令牌

Deployment令牌拥有所有权限,所以这应该不是问题。

我还尝试了命令的不同变体,在其中将标记添加到了注册表URL:

  • https://用户名:token@registry.gitlab.com(组)/(项目)
  • https://名称:token@registry.gitlab.com(group)/(项目)

但是在那些情况下,显然没有这些参数:

  • Dquarkus.container-image.username = $ username
  • Dquarkus.container-image.password = $ deployToken

但是我每次都得到同样的回应:

Failed to execute goal io.quarkus:quarkus-maven-plugin:1.7.2.Final:build (default) on project (project): 
Failed to build quarkus application: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
[ERROR]     [error]: Build step io.quarkus.container.image.jib.deployment.JibProcessor#buildFromJar threw an exception: java.lang.IllegalArgumentException: 
The supplied container-image registry 'https://registry.gitlab.com/(group)/(project)' is invalid

我真的希望有人有一个主意,这里出了什么问题。


在另一个项目中,我还使用Jib容器化了一个spring boot应用程序,并将其推送到Google Container Registry,当我预先使用Google SDK时,该容器将起作用。

- gcloud auth activate-service-account (account-name) --key-file=$gsdk_token
- gcloud auth configure-docker

Gitlab注册中心是否可能有类似的方法?

1 个答案:

答案 0 :(得分:1)

this code根据this check引发错误。 “注册表”字符串的格式应为

std::function

因此,您的情况应该是

some.registry.host.example.com[:optional_port]

我还注意到Quarkus曾经对图像引用强制使用very rigid format(到目前为止,我还不知道它已经解决了);您需要咨询Quarkus plugin doc来了解如何正确格式化最终图像参考。

另请参阅其他Quarkus问题:


Jib用户的奖励:

Quarkus内部使用Jib Core library(为Jib Maven / Gradle构建插件提供动力的同一库)来构建容器映像是很棒的。但是对于那些感兴趣的人来说,Jib构建插件还具有直接将Quarkus应用容器化的Jib Quarkus扩展(Maven / Gradle)。