gpt4 book ai didi

amazon-web-services - 在 Jenkinsfile 中对 ECR 进行身份验证,以便我可以提取图像来运行构建?

转载 作者:行者123 更新时间:2023-12-02 18:00:25 25 4
gpt4 key购买 nike

这里的情况是我们有一个应用程序,该应用程序当前正在 Jenkins slave 上构建,并在其上安装了特定版本的节点。我们想要标准化构建环境,因此想要在 docker 容器中构建。

通过我的研究它definitely seems possible .然而,我们面临的挑战是我们想要使用我们自己管理并存储在 ECR 中的自定义图像。我们不想使用 docker hub 上的那些。考虑到这一限制,我正在努力在我的 Jenkinsfile 中对我们的 ECR 进行身份验证。理想情况下,我可以做这样的事情:

pipeline {
agent {
docker {
image 'node:7'
registryUrl 'ecr_url.amazonaws.com'
registryCredentialsId 'ecr:us-east-1:iam_role'
}
}
stages {
stage('Build') {
steps {
sh 'command goes here'
}
}
}
}

但这里的问题是,我们的 ECR 登录依赖于在 Jenkins 工作器(安装了 aws cli)上运行 shell 命令来登录并访问图像。到目前为止,我还没有在 Jenkinsfile 中进行身份验证,所以我可以提取一个图像来运行构建。有谁知道这是否可能,如果是,如何编辑 Jenkinsfile 来做到这一点?

最佳答案

在从 ECR 提取图像之前,您需要授权 token ,这意味着您还需要在 Jenkins 服务器上安装 AWS-CLI。最好的方法是分配角色并在您的管道中的某处运行以下命令以获取授权 token ,如果您觉得这很复杂,您可以使用下面的 ECR 插件。

Your Docker client must authenticate to Amazon ECR registries as an AWS user before it can push and pull images. The AWS CLI get-login command provides you with authentication credentials to pass to Docker. For more information, see Registry Authentication.



AmazonECR-registry_auth

所以你可以使用 JENKINS/Amazon+ECR
enter image description here

Amazon ECR plugin implements a Docker Token producer to convert Amazon credentials to Jenkins’ API used by (mostly) all Docker-related plugins. Thank's to this producer, you can select your existing registered Amazon credentials for various Docker operations in Jenkins, for sample using CloudBees Docker Build and Publish plugin:



通常我们使用这个命令来获取 token 。
$(aws ecr get-login --no-include-email --region us-west-2)

在管道中,您可以尝试
pipeline
{
options
{
buildDiscarder(logRotator(numToKeepStr: '3'))
}

agent any
environment
{
PROJECT = 'tap_sample'
ECRURL = 'http://999999999999.dkr.ecr.eu-central-1.amazonaws.com'
ECRCRED = 'ecr:eu-central-1:tap_ecr'
}
stages
{
stage('Docker image pull')
{
steps
{
script
{
sh("eval \$(aws ecr get-login --no-include-email | sed 's|https://||')")
docker.withRegistry(ECRURL, ECRCRED)
{
docker.image(PROJECT).pull()
}
}
}
}
}
}

关于amazon-web-services - 在 Jenkinsfile 中对 ECR 进行身份验证,以便我可以提取图像来运行构建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58617208/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com