我目前正在开发 Quarkus 应用程序,因此需要一个 CI 管道 + 容器注册表。
由于通过 docker 的容器化不起作用(docker daemon - 特权模式),我想使用 Quarkus 已经支持的 Jib。
管道中的命令:
- 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://username:token@registry.gitlab.com(group)/(project)
- https://name:token@registry.gitlab.com(group)/(project)
但在那些没有这些参数的情况下很明显:
- 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 Container Registry,当我提前使用 Google SDK 时,它可以工作。
- gcloud auth activate-service-account (account-name) --key-file=$gsdk_token
- gcloud auth configure-docker
Gitlab Registry 可能有类似的方法吗?