我即將在Gitlab中與Golang軟件實現完整(無需測試階段)的持續集成。當我嘗試在該docker login步驟中構建 Docker 映像時,它失敗了。這是我的.gitlab-ci.yml:stages: - buildvariables: REGISTRY: registry.gitlab.com GO_PROJECT: mysoftwarebuild_golang_binary: image: golang:latest stage: build before_script: - mkdir -p ${GOPATH}/src/${GO_PROJECT} - cp -r ${CI_PROJECT_DIR}/* ${GOPATH}/src/${GO_PROJECT}/ - cd ${GOPATH}/src/${GO_PROJECT} - go get script: - cd ${GOPATH}/src/${GO_PROJECT} - go buildbuild_docker_image: image: docker:latest stage: build script: - docker login $REGISTRY - docker build --no-cache -t ${REGISTRY}/me/${GO_PROJECT} . - docker push ${REGISTRY}/me/${GO_PROJECT}這是我收到的錯誤:$ docker login $REGISTRYError: Cannot perform an interactive login from a non TTY device我認為憑證將被提供到這個 CI 過程中。顯然,事實并非如此。解決這個問題的最佳選擇是什么?
1 回答

臨摹微笑
TA貢獻1982條經驗 獲得超2個贊
我的回答假設您使用 GitLab.com 作為 CI 和注冊表(基于registry.gitlab.com
上面.gitlab-ci.yml
的示例)。
您可以利用 GitLab CI 作業中可用的多個環境變量來向 GitLab 注冊表進行身份驗證:
docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
這$CI_REGISTRY_PASSWORD
是一個臨時令牌,僅在您的工作期間有效。
- 1 回答
- 0 關注
- 151 瀏覽
添加回答
舉報
0/150
提交
取消