[英]How to use docker-credential-pass to login to a private registry?
[英]How to safely login to private docker registry in gitlab?
我知道有秘密變量,我嘗試將秘密傳遞給 bash 腳本。 當在具有#!/bin/bash -x
的 bash 腳本上使用時,密碼可以在使用 docker login 命令時以明文形式顯示,如下所示:
docker login "$USERNAME" "$PASSWORD" $CONTAINERREGISTRY
有沒有辦法安全地登錄到 gitlab-ci 中的容器注冊表?
如果您需要多個身份驗證,您可以在gitlab-ci.yml
文件的開頭或每個作業中使用before_script
:
before_script:
- echo "$CI_REGISTRY_PASSWORD" | docker login -u "$CI_REGISTRY_USER" --password-stdin
其中$CI_REGISTRY_USER
和CI_REGISTRY_PASSWORD
將是秘密變量。
在每個腳本之后或在整個文件的開頭:
after_script:
- docker logout
我寫了一篇關於使用 Gitlab CI 和 Docker 構建 docker 鏡像的答案: https ://stackoverflow.com/a/50684269/8247069
GitLab 在運行作業時提供了一組環境變量。 你會想要在開發(運行測試構建等)時熟悉並使用它們,這樣你就不需要做任何事情,除了在 GitLab 中相應地設置 CI/CD 變量(如 ENV),Gitlab 將提供大部分內容你會想要的請參閱GitLab 環境變量。
只是對之前建議的內容稍作調整(將 GitLab 建議與此相結合。)
有關在何處/如何使用 before_script 和 after_script 的更多信息,請參閱.gitlab-ci-yml 配置參數“后腳本”。
before_script:
- echo "$CI_REGISTRY_PASSWORD" | docker login "$CI_REGISTRY" -u "$CI_REGISTRY_USER" --password-stdin;
然后進一步向下你的 .gitlab-ci.yml ......
after_script:
- docker logout;
對於我的本地開發,我創建了一個遵循通用約定的 .env 文件,然后以下 bash 代碼段將檢查該文件是否存在並將值導入到您的 shell 中。 為了使我的項目安全且友好, .env
被忽略,但我維護了一個帶有安全示例值的 .env.sample 並且我確實包含了它。
if [ -f .env ]; then printf "\n\n::Sourcing .env\n" && set -o allexport; source .env; set +o allexport; fi
這是一個大致完整的示例:
image: docker:19.03.9-dind
stages:
- buildAndPublish
variables:
DOCKER_TLS_CERTDIR: "/certs"
DOCKER_DRIVER: overlay2
services:
- docker:19.03.9-dind
before_script:
- printf "::GitLab ${CI_BUILD_STAGE} stage starting for ${CI_PROJECT_URL}\n";
- printf "::JobUrl=${CI_JOB_URL}\n";
- printf "::CommitRef=${CI_COMMIT_REF_NAME}\n";
- printf "::CommitMessage=${CI_COMMIT_MESSAGE}\n\n";
- printf "::PWD=${PWD}\n\n";
- echo "$CI_REGISTRY_PASSWORD" | docker login $CI_REGISTRY -u $CI_REGISTRY_USER --password-stdin;
build-and-publish:
stage: buildAndPublish
script:
- buildImage;
- publishImage;
rules:
- if: '$CI_COMMIT_REF_NAME == "master"' # Run for master, but not otherwise
when: always
- when: never
after_script:
- docker logout registry.gitlab.com;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.