我已經在我們的 ec2 實體上安裝了憑證助手GitHub并讓它為我的帳戶作業。我想要做的是在我的 GitLab CI/CD 管道中使用它,我的 gitlab-runner 實際上在 docker 容器內運行,并為構建、測驗和部署階段生成新容器。這就是我們的測驗階段現在的樣子:
image: docker:stable
run_tests:
stage: test
tags:
- test
before_script:
- echo "Starting tests for CI_COMMIT_SHA=$CI_COMMIT_SHA"
- docker run --rm mikesir87/aws-cli aws ecr get-login-password | docker login --username AWS --password-stdin $IMAGE_URL
script:
- docker run --rm $IMAGE_URL:$CI_COMMIT_SHA npm test
這作業正常,但我想看看我是否可以作業如下:
image: docker:stable
run_tests:
image: $IMAGE_URL:$CI_COMMIT_SHA
stage: test
tags:
- test
script:
- npm test
當我嘗試第二個選項時,我得到了no basic auth credentials. 所以我想知道是否有一種方法可以讓憑證助手映射到 docker 容器,而不必在影像本身上安裝憑證助手。
uj5u.com熱心網友回復:
將您的運行程式配置為使用帶有DOCKER_AUTH_CONFIG環境變數的憑證助手。一種方便的方法是將其全部烘焙到您的影像中。
因此,您的 gitlab-runner 映像應該包含docker-credential-ecr-login二進制檔案(或者您應該從主機安裝它)。
FROM gitlab/gitlab-runner:v14.3.2
COPY bin/docker-credential-ecr-login /usr/local/bin/docker-credential-ecr-login
然后,當您使用標志呼叫gitlab-runner register傳遞DOCKER_AUTH_CONFIG環境變數時--env,如下所示:
AUTH_ENV="DOCKER_AUTH_CONFIG={ \"credsStore\": \"ecr-login\" }"
gitlab-runner register \
--non-interactive \
...
--env "${AUTH_ENV}" \
--env "AWS_SDK_LOAD_CONFIG=true" \
...
您還可以在config.toml、實體 CI/CD 變數或設定 CI/CD 變數的任何地方(組、專案、yaml、觸發器等)中等效地設定它。
只要您的 EC2 實體(或 ECS 任務角色,如果將 gitlab-runner 作為 ECS 任務運行)有權拉取鏡像,您的作業就能夠從image:部分宣告的 ECR 拉取鏡像。
但是,這不一定會讓您使用 docker-in-docker 自動拉取影像(例如docker pull在script:作業的部分內呼叫)。這可以配置(因為您似乎已經在作業),但可能需要額外的設定,具體取決于您的運行器和 IAM 配置。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/354199.html
標籤:亚马逊网络服务 码头工人 验证 gitlab-ci-runner 亚马逊-ECR
上一篇:使用VueJS3App呼叫Laravel8登錄API
下一篇:GoogleColab-無法再安裝GoogleDrive-瀏覽器彈出視窗(GoogleDriveforDesktop)而不是代碼輸出中的鏈接以進行授權
