作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的私有(private)仓库中已经有一张图片。我需要提取该图像,创建一个标签并将其推送到注册表。
使用 Jenkins WithRegistry 的最佳方法是什么?
这是我的实际代码:
stage("Applying to docker repo") {
steps {
script {
def imageNameLookup = configs.dockerRegistry.repo + "/"+repo.toLowerCase()+":"+params.versionToTag
echo 'looking up '+ imageNameLookup
docker.withRegistry('https://' + configs.dockerRegistry.url, configs.dockerRegistry.credentialsId) {
try {
image = docker.image(repo.toLowerCase()+":"+params.versionToTag).pull()
image.tag("${deliveryTag}")
image.push()
} catch (Exception e) {
echo ' catch 2 '+ e.getMessage()
}
}
}
}
}
bfc9288fe86d: Pull complete Digest: sha256:ee9b01eb62f2f21dcb3bf4af285702c8991d1789e659515fdfa2da2619f1d8b9 Status: Downloaded newer image for repodocker-xxx.xxx.xx/my-api:1.19.0 [Pipeline] echo catch 2 Cannot invoke method tag() on null object
docker.withRegistry('https://' + configs.dockerRegistry.url, configs.dockerRegistry.credentialsId) {
try {
docker.image(repo.toLowerCase()+":"+params.versionToTag).pull()
sh "docker tag ${repo.toLowerCase()} ${configs.dockerRegistry.url}/${repo.toLowerCase()}:${deliveryTag}"
sh ""
)
} catch (Exception e) {
echo ' catch 2 '+ e.getMessage()
}
[Pipeline] sh
+ docker pull repodocker-xxxx.xxx.xx/myapi-api:1.19.0
1.19.0: Pulling from myapi-api
Digest: sha256:ee9b01eb62f2f21dcb3bf4af285702c8991d1789e659515fdfa2da2619f1d8b9
Status: Image is up to date for repodocker-xxxx.xxx.xx/myapi-api:1.19.0
[Pipeline] sh
+ docker tag myapi-api grdocker-xxxx.xx.xx:443/xx.xxx.xxx/myapi-api:testTag20
Error response from daemon: No such image: myapi-api:latest
[Pipeline] echo
catch 2 script returned exit code 1
stage("Applying to docker repo") {
steps {
script {
docker.withRegistry('https://' + configs.dockerRegistry.url, configs.dockerRegistry.credentialsId) {
docker.image(repo.toLowerCase()+":"+params.versionToTag).pull()
sh "docker tag ${configs.dockerRegistry.url}/${repo.toLowerCase()}:${params.versionToTag} ${configs.dockerRegistry.url}/${repo.toLowerCase()}:${deliveryTag}"
sh "docker push ${configs.dockerRegistry.url}/${repo.toLowerCase()}:${deliveryTag}"
}
}
}
}
stage("Applying to docker repo") {
steps {
script {
docker.withRegistry('https://' + configs.dockerRegistry.url, configs.dockerRegistry.credentialsId) {
docker.image(repo.toLowerCase()+":"+params.versionToTag).pull()
sh "docker tag ${configs.dockerRegistry.url}/${repo.toLowerCase()}:${params.versionToTag} ${configs.dockerRegistry.url}/${repo.toLowerCase()}:${deliveryTag}"
sh "docker push ${configs.dockerRegistry.url}/${repo.toLowerCase()}:${deliveryTag}"
docker.image(repo.toLowerCase()+":${deliveryTag}").pull()
}
}
}
}
最佳答案
已安装 docker-engine 并且您的服务器应该可以访问注册表:
docker login ip_registry:5000
stage('registry') {
steps {
sh "docker tag ${imageName} ${registryServer}/${imageName}:latest"
sh "docker push ${registryServer}/${imageName}:latest"
}
}
关于docker - 使用 Jenkins 管道 docker 插件,如何拉取图像并向其推送新标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58628261/
我是一名优秀的程序员,十分优秀!