来自 AWS ECR 的 Jenkins 管道 Docker 代理
Jenkins pipeline Docker agent from AWS ECR
我需要在 Docker 作为代理执行 Jenkins 管道,
Docker 图像位于 AWS ECR,
我如何通过 AWS ECR 授权为代理拉取图像?
根据此页面 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
"""
意味着您需要授权令牌才能从 ECR 中提取图像,这意味着您还需要在 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)
Go 需要在 Docker 中作为代理执行 Jenkins 管道
更喜欢这个 link.
你可以试试这个:
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*"
}
}
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>'
}
}
要在 jenkins 中使用 AWS ECR 存储库中的图像作为代理,您首先需要添加种类凭证 AWS Credentials
。
现在只需使用上面的代码在您的管道代码中插入代理块。
确保更换
<aws-account>
与 AWS 账户 ID。
<ecr-repo>
与 ECR 存储库名称
<tag>
带有您要使用的 ECR 图像标签。
<Jenkins Credential ID>
使用在 Jenkins 中保存凭据时获得的 Jenkins 凭据 ID。
us-west-2
替换为你的 ecr 仓库区域
您可以使用 https://<jenkins.url>/directive-generator/
为您生成此代码。
我需要在 Docker 作为代理执行 Jenkins 管道,
Docker 图像位于 AWS ECR,
我如何通过 AWS ECR 授权为代理拉取图像?
根据此页面 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
"""
意味着您需要授权令牌才能从 ECR 中提取图像,这意味着您还需要在 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)
Go 需要在 Docker 中作为代理执行 Jenkins 管道 更喜欢这个 link.
你可以试试这个:
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*"
}
}
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>'
}
}
要在 jenkins 中使用 AWS ECR 存储库中的图像作为代理,您首先需要添加种类凭证 AWS Credentials
。
现在只需使用上面的代码在您的管道代码中插入代理块。
确保更换
<aws-account>
与 AWS 账户 ID。<ecr-repo>
与 ECR 存储库名称<tag>
带有您要使用的 ECR 图像标签。<Jenkins Credential ID>
使用在 Jenkins 中保存凭据时获得的 Jenkins 凭据 ID。us-west-2
替换为你的 ecr 仓库区域
您可以使用 https://<jenkins.url>/directive-generator/
为您生成此代码。