我需要在Docker中作为代理执行Jenkins管道,
Docker映像位于AWS ECR中,
如何通过AWS ECR进行身份验证以提取代理的映像?
答案 0 :(得分:2)
您可以尝试以下方法:
agent {
docker {
label "buildDockerNode"
image "nodejs10-test-v1"
alwaysPull true
registryUrl "*aws_account_id*.dkr.ecr.us-west-2.amazonaws.com/*project*"
registryCredentialsId "ecr:us-west-2:*cred_id*"
}
}
答案 1 :(得分:2)
agent {
docker {
alwaysPull true
image '<aws-account-Id>.dkr.ecr.us-west-2.amazonaws.com/<ecr-repo>:<tag>'
registryUrl 'https://<aws-account-Id>.dkr.ecr.us-west-2.amazonaws.com'
registryCredentialsId 'ecr:us-west-2:<Jenkins Credential ID>'
}
}
首先要将来自AWS ECR存储库的图像用作jenkins中的代理,您需要添加种类AWS Credentials
的凭据。
现在,只需使用以上代码在您的管道代码中插入代理块即可。
确保更换
<aws-account>
和AWS账户ID。
<ecr-repo>
(具有ECR存储库名称
<tag>
带有要使用的ECR图像标签。
<Jenkins Credential ID>
(带有Jenkins凭据),当您将凭据保存在Jenkins中时获得。
us-west-2
替换为您的ecr存储区
您可以使用https://<jenkins.url>/directive-generator/
为您生成此代码。
答案 2 :(得分:1)
根据此页面https://aws.amazon.com/blogs/compute/authenticating-amazon-ecr-repositories-for-docker-cli-with-credential-helper/,以下内容应适用:
sh """#!/bin/bash
docker login -u=${USER} -p=${PASS} https://aws_account_id.dkr.ecr.us-east-1.amazonaws.com
"""
答案 3 :(得分:1)
意味着从ECR提取映像之前,您需要获得Authorization令牌,这意味着您还需要在Jenkins服务器上安装AWS-CLI。最好的方法是分配角色,然后在管道中运行以下命令以获取授权令牌,如果比较复杂,请使用下面的ECR插件。
在可以推送和拉取映像之前,Docker客户端必须以AWS用户身份向Amazon ECR注册表进行身份验证。 AWS CLI get-login命令为您提供身份验证凭证,以传递给Docker。有关更多信息,请参见Registry身份验证。 使用JENKINS/Amazon+ECR
注意:要基于AWS注册自动创建令牌,或者您可以在提取之前在jenkins文件中运行此命令
$(aws ecr get-login --no-include-email --region us-west-2)
并且需要在Docker中作为代理执行Jenkins管道 更喜欢此link。