【发布时间】:2017-09-29 17:05:27
【问题描述】:
我无法使用 Jenkins Pipeline 将 ocker 图像推送到 Amazon ECR:我总是收到 no basic auth credentials :-(
这是我的设置:
- 詹金斯 2.46.2
- Amazon ECR plugin 1.4
- 我已将 AWS 凭证
aws-jenkins添加到 Jenkins(在本地测试并成功推送到 AWS ECR) - 我已经打印了
/root/.dockercfg以在我的Jenkinsfile中调试身份验证
Jenkins 文件:
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()
}
}
日志:
[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
有什么想法吗?
更新(2017-05-23):
这是 Jira 问题:
https://issues.jenkins-ci.org/browse/JENKINS-44143
【问题讨论】:
-
ecr:eu-central-1:
是 AWS 凭据吗? -
是的。为了清楚起见,我更新了我的问题。我在 Jenkins 中创建了新的 AWS 凭证并将其命名为
aws-jenkins。 -
我添加了 Jira 问题:issues.jenkins-ci.org/browse/JENKINS-44143
标签: jenkins jenkins-pipeline jenkins-docker amazon-ecr