pipeline {
agent {
label 'label'
}
environment {
AWS_ACCESS_ID = credentials('aws-access-key')
AWS_SECRET_KEY = credentials('aws-secret-key')
DKR_AWS_CLI = 'docker run '
'-e AWS_ACCESS_KEY_ID=${AWS_ACCESS_ID} '
'-e AWS_SECRET_ACCESS_KEY=${AWS_SECRET_KEY} '
'-e AWS_DEFAULT_REGION=eu-central-1 '
//'-v `pwd`:/project '
'image1/aws-cli'
}
stages {
stage('pull latest aws-cli docker image') {
steps {
sh "docker pull image1/aws-cli"
}
}
stage('logging in to AWS ECR') {
steps {
script {
def ECR_LOGIN = sh(
script: "${DKR_AWS_CLI} ecr get-login --region=eu-central-1",
returnStdout: true
).trim()
sh "${ECR_LOGIN}"
}
}
}
}
我已將我的憑據添加到 jenkins,但我無法登錄 ECR,出現以下錯誤
HTTPSConnectionPool(host='ecr.eu-central-1.amazonaws.com', port=443): 最大重試次數超過 url: / (由 ConnectTimeoutError(<botocore.awsrequest.AWSHTTPSConnection object at 0x7f9a816fa0d0>, 'Connection to ecr .eu-central-1.amazonaws.com 超時。(連接超時=60)'))
uj5u.com熱心網友回復:
很可能您還需要以編程方式(即在您的代碼中)為您的會話添加一個令牌。
uj5u.com熱心網友回復:
您可以如上所述撰寫 Jenkins 管道。您可以將 ecr 憑據存盤在 Jenkins 中,并在管道中參考 Jenkins 憑據。在此示例代碼中,我將其稱為ecr-credentials. 確保您的 IAM 用戶有權訪問 ECR。
pipeline {
environment {
registry = "xxxx.xxx.ecr.us-east-1.amazonaws.com/repo"
dockerImage = ''
}
stages {
stage('Create Docker image') {
steps {
script {
dockerImage = docker.build registry ":$BUILD_NUMBER"
}
}
}
stage('Push Docker image to Docker Registry') {
steps {
script {
docker.withRegistry( "https://" registry, "ecr:aws-region:ecr-credentials") {
dockerImage.push()
}
}
}
}
}
}
uj5u.com熱心網友回復:
stage('Login ECR image') {
steps {
script {
sh "aws ecr get-login-password --region ADD_YOUR_REGION_NAME | docker login --username AWS --password-stdin ADD_YOUR_REPO_NAME"
sh "docker build -t image_name_containing_repo_name ."
sh "docker push image_name_containing_repo_name"
}
}
}
回購名稱以AWS_ACCOUNT_NO.dkr.ecr.YOUR_REGION_NAME.amazonaws.com登錄命令開頭
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/476092.html
