关于这个问题,我用脚本化的 Jenkins 管道更新了我的 JHipster-Application 并且现在有Jenkinsfile
(部分遵循这些提示):
[...]
def dockerImage
withEnv(["DOCKER_CREDS=credentials('myregistry-login')"]) {
stage('publish docker') {
sh "./mvnw -X -ntp jib:build"
}
}
将 Jenkins 全局凭据myregistry-login
保存在我的 Jenkins-Server 中到我自己的 docker 注册表 v2 docker-container https://myregistry.mydomain.com
(出于安全原因更改了域)。我可以$ docker login myregistry.mydomain.com
使用docker login https://myregistry.mydomain.com
存储docker login myregistry.mydomain.com:443
在myregistry-login
.
在pom.xml
(遵循这些提示以及this、this和this):
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<configuration>
<to>
<image>myregistry.mydomain.com:443/username/imagename</image>
<tags>
<tag>${maven.build.timestamp}</tag>
<tag>latest</tag>
</tags>
<auth>
<username>${env.DOCKER_CREDS_USR}</username>
<password>${env.DOCKER_CREDS_PSW}</password>
</auth>
</to>
<container>
<jvmFlags>
<jvmFlag>-Xms512m</jvmFlag>
<jvmFlag>-Xmx1G</jvmFlag>
<jvmFlag>-Xdebug</jvmFlag>
</jvmFlags>
<mainClass>de.myproject_name.MyApp</mainClass>
</container>
</configuration>
</plugin>
whereusername
和是这里imagename
的de.myproject_name.MyApp
占位符。
不幸的是我得到
[DEBUG] TIMING Retrieving registry credentials for myregistry.mydomain.com:443
[DEBUG] No credentials could be retrieved for registry myregistry.mydomain.com:443
[...]
[ERROR] I/O error for image [myregistry.mydomain.com:443/username/imagename]:
[ERROR] Connect to myregistry.mydomain.com:443 [myregistry.mydomain.com/xxx.xxx.xxx.xxx] failed: Connection refused (Connection refused)
[DEBUG] TIMED Authenticating push to myregistry.mydomain.com:443 : 460.0 ms
[DEBUG] TIMED Building and pushing image : 514.0 ms
[ERROR] I/O error for image [registry-1.docker.io/library/adoptopenjdk]:
[ERROR] Socket closed
所以withEnv
没有转发给 Maven 和/或 jib-maven-plugin 没有读取<auth>
-Tag,对吗?我还在做错什么?为什么会有 I/O 错误registry-1.docker.io
?