Ced*_*ult 5 jenkins jenkins-docker jenkins-pipeline amazon-ecr
我无法用Jenkins Pipeline将ocker图像推送到Amazon ECR:我总是得到no basic auth credentials:-(
这是我的设置:
aws-jenkins到Jenkins(在本地测试并成功推送到AWS ECR)/root/.dockercfg到我的调试authJenkinsfileJenkinsfile:
stage("Docker") {
dir(path) {
docker.build("my-image:latest")
}
docker.withRegistry("https://<my-aws-id>.dkr.ecr.eu-central-1.amazonaws.com", "ecr:eu-central-1:aws-jenkins") {
sh "cat /root/.dockercfg" // debug
docker.image("my-image:latest").push()
}
}
Run Code Online (Sandbox Code Playgroud)
日志:
[Pipeline] withDockerRegistry
Wrote authentication to /root/.dockercfg
[Pipeline] {
[Pipeline] sh
[docker-emotion-compilers] Running shell script
+ cat /root/.dockercfg
{"https://<my-aws-id>.dkr.ecr.eu-central-1.amazonaws.com": {
"auth": "[...]",
"email": "nobody@example.com"
}}[Pipeline] sh
[docker-emotion-compilers] Running shell script
+ docker tag --force=true my-image:latest <my-aws-id>.dkr.ecr.eu-central-1.amazonaws.com/my-image:latest
Warning: '--force' is deprecated, it will be removed soon. See usage.
[Pipeline] sh
[docker-emotion-compilers] Running shell script
+ docker push <my-aws-id>.dkr.ecr.eu-central-1.amazonaws.com/my-image:latest
The push refers to a repository [<my-aws-id>.dkr.ecr.eu-central-1.amazonaws.com/my-image]
e30bf54e0f87: Preparing
b9f2c30c0d28: Preparing
5defc95691fd: Preparing
295d6a056bfd: Preparing
no basic auth credentials
[Pipeline] }
[Pipeline] // withDockerRegistry
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
更新(2017-05-23):
这是Jira问题:https:
//issues.jenkins-ci.org/browse/JENKINS-44143
即使 docker.withRegistry 在启动时执行登录 ECR 并在完成后注销似乎是合乎逻辑的,但它并没有执行。因此,在执行推送之前,您必须安装awscli并添加 ECR 登录命令。
sh("eval \$(aws ecr get-login --no-include-email | sed 's| https://|| ')")
有关详细示例,请参阅http://www.tikalk.com/devops/ecr-in-pipeline/ 。
| 归档时间: |
|
| 查看次数: |
2633 次 |
| 最近记录: |