无法推送到 Gitlab 注册表 | Quarkus - 臂架构建

2024-03-24

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

由于通过 docker 的容器化不起作用(docker 守护进程 - 特权模式),我想使用 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)
  • 用户名 = 部署令牌用户名
  • 密码 = 部署令牌

部署令牌具有所有权限,因此这应该不是问题。

我还尝试了该命令的不同变体,在注册表 URL 中添加了令牌:

  • https://用户名:[电子邮件受保护] /cdn-cgi/l/email-protection(团体)/(项目)
  • https://名称:[电子邮件受保护] /cdn-cgi/l/email-protection(团体)/(项目)

但在那些明显没有这些参数的情况下:

  • Dquarkus.container-image.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 容器注册表,当我提前使用 Google SDK 时,它就可以工作了。

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

Gitlab 注册表是否可以采用类似的方法?


错误是由抛出的这段代码 https://github.com/quarkusio/quarkus/blob/8229f0072d6afa22eb82328749ea1ab294154606/extensions/container-image/container-image-jib/deployment/src/main/java/io/quarkus/container/image/jib/deployment/JibProcessor.java#L220基于这张支票 https://github.com/GoogleContainerTools/jib/blob/dbc5b7d58532f6fd21c53faf394f68ecbf40d8fd/jib-core/src/main/java/com/google/cloud/tools/jib/api/ImageReference.java#L218。 “registry”字符串应采用以下形式:

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

因此,就你的情况而言,应该是

-Dquarkus.container-image.registry=registry.gitlab.com

我还注意到 Quarkus 曾经强制执行过格式非常严格 https://github.com/quarkusio/quarkus/issues/8117#issuecomment-603703875图像参考(我不知道现在是否已解决);你需要咨询Quarkus 插件文档 https://quarkus.io/guides/container-image#quarkus-container-image_configuration了解如何正确设置最终图像参考的格式。

另请参阅其他 Quarkus 问题:

  • https://github.com/quarkusio/quarkus/issues/8588 https://github.com/quarkusio/quarkus/issues/8588
  • https://github.com/quarkusio/quarkus/issues/8117 https://github.com/quarkusio/quarkus/issues/8117

Jib 用户的奖励:

Quarkus 在内部利用了Jib核心库 https://github.com/GoogleContainerTools/jib/blob/master/jib-core(与支持 Jib Maven/Gradle 构建插件的库相同)构建容器映像。但对于那些感兴趣的人来说,Jib 构建插件还具有 Jib Quarkus 扩展(Maven https://github.com/GoogleContainerTools/jib-extensions/tree/master/first-party/jib-quarkus-extension-maven/Gradle https://github.com/GoogleContainerTools/jib-extensions/tree/master/first-party/jib-quarkus-extension-gradle)直接容器化 Quarkus 应用程序。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法推送到 Gitlab 注册表 | Quarkus - 臂架构建 的相关文章

随机推荐