AWS ECR的Jenkins管道Docker代理

时间:2019-09-25 08:19:29

标签: jenkins-pipeline aws-ecr

我需要在Docker中作为代理执行Jenkins管道,

Docker映像位于AWS ECR中,

如何通过AWS ECR进行身份验证以提取代理的映像?

4 个答案:

答案 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的凭据。 现在,只需使用以上代码在您的管道代码中插入代理块即可。 确保更换

  1. <aws-account>和AWS账户ID。

  2. <ecr-repo>(具有ECR存储库名称

  3. <tag>带有要使用的ECR图像标签。

  4. <Jenkins Credential ID>(带有Jenkins凭据),当您将凭据保存在Jenkins中时获得。

  5. 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 enter image description here

注意:要基于AWS注册自动创建令牌,或者您可以在提取之前在jenkins文件中运行此命令

$(aws ecr get-login --no-include-email --region us-west-2)

并且需要在Docker中作为代理执行Jenkins管道 更喜欢此link