这是可能的,但调试起来非常微妙,因此请确保遵循以下步骤。
dockerfile
在 jenkins 管道中使用代理(您可以命名它Dockerfile.jenkins
或您喜欢的其他名称)并在其中安装amazon ecr credential helper以获得干净稳定的构建环境。
FROM ubuntu:rolling
RUN apt-get update && apt-get install -y amazon-ecr-credential-helper
config.json
在您的 git 存储库中创建一个文件,例如.docker/config.json
.
{
"credHelpers": {
"[YOUR_ACCOUNT_ID].dkr.ecr.[YOUR_REGION].amazonaws.com": "ecr-login"
}
}
docker pull
在您的中进行测试Jenkinsfile
,确保您的访问密钥的用户启用了正确的策略(可能AmazonEC2ContainerRegistryFullAccess
)。
pipeline {
agent {
dockerfile {
filename 'Dockerfile.jenkins'
}
}
stages {
stage('TEST ECR') {
steps {
script {
sh "DOCKER_CONFIG=.docker AWS_ACCESS_KEY_ID=[YOUR_ACCESS_KEY_ID] AWS_SECRET_ACCESS_KEY=[YOUR_SECRET_KEY] docker pull [YOUR PRIVATE IMAGE]"
// docker.build("${tag}", "${DOCKER_BUILD_ARGS} -f Dockerfile .")
// sh "docker push ${tag}"
}
}
}
}
}
如果可以拉,那么您可以更改DOCKER_CONFIG=.docker AWS_ACCESS_KEY_ID=[YOUR_ACCESS_KEY_ID] AWS_SECRET_ACCESS_KEY=[YOUR_SECRET_KEY] docker pull [YOUR PRIVATE IMAGE]
为docker push [YOUR IMAGE]
正确的环境变量设置。
你的回购似乎:
.
├── .docker
│ └── config.json
├── Dockerfile
└── Dockerfile.jenkins