2016-04-07 60 views
1

我設立一個gitlab-CI過程,但我無法理解我應該如何管理我的祕密......傳遞信譽給gitlab-ci亞軍能夠推碼頭圖像...?

所以,我已經成功地啓動了一個gitlab/gitlab亞軍的碼頭工人和容器註冊來自gitlab/dind的碼頭運動員。

我想在這種情況下構建的事情只是從Dockerfile構建Docker鏡像,填充緩存以供其他ci集成測試構建使用。這通過推送到我的私人碼頭註冊表。在這種情況下,我.gitlab-ci.yml的定義就是:

build_image: 
    script: 
    - docker build -t ensime/ensime-atom-ci . 
    - docker tag ensime/ensime-atom-ci docker.woodenstake.se/ensime/ensime-atom-ci 
    - docker push docker.woodenstake.se/ensime/ensime-atom-ci 

似乎很簡單,但我當然沒有creds這裏,所以它失敗:

我剛剛從無人駕駛飛機來到這裏我產生.sec文件爲此。

但是我在這裏登錄吧?所以我在這裏讀

https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/blob/master/docs/configuration/advanced-configuration.md#using-a-private-docker-registry

問題是因爲我正在從dockerized gitlab/gitlab亞軍圖像內gitlab亞軍,還有甚至不似乎是一個碼頭工人CLI嗎?

[email protected]:/var/lib$ sudo docker exec -it gitlab-runner docker login 
exec: "docker": executable file not found in $PATH 

任何提示高度讚賞!

更新澄清:

所以gitlab-CI生成日誌的尾部是:

012ca7ed9b62: Retrying in 1 seconds 
173cd98367a6: Retrying in 1 seconds 
92b0661193a5: Retrying in 1 seconds 
c12ecfd4861d: Waiting 
5f70bf18a086: Retrying in 5 seconds 
no basic auth credentials 

ERROR: Build failed: exit code 1 

的主機記錄在註冊表根。試圖從碼頭集裝箱登錄我只是甚至沒有碼頭cli。

我在賽跑者的註冊上添加了--docker-privileged國旗。

我猜證書需要通過主機 - > gitlab亞軍 - >亞軍實例(DIND)

+0

你知道如何登錄嗎?我目前面臨同樣的問題... –

回答

5

如果您正在使用gitlab自己的容器註冊表您必須將以下添加到腳本節上你。 gitlab-ci.yml文件:

docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN docker.woodenstake.se

如果您正在使用外部註冊表,我建議你添加憑據作爲變量到您的構建上項目設置>變量,那麼你就可以行docker login -u $USER_VAR -p $PASS_VAR docker.woodenstake.se添加到gitlab-ci.yml文件。

它應該是這樣的:

build_image: 
    script: 
    - docker login -u $USER_VAR -p $PASS_VAR docker.woodenstake.se 
    - docker build -t ensime/ensime-atom-ci . 
    - docker tag ensime/ensime-atom-ci docker.woodenstake.se/ensime/ensime-atom-ci 
    - docker push docker.woodenstake.se/ensime/ensime-atom-ci 
1

從私有註冊的運動員需要有憑據,請使用圖像。正如你自己發現的那樣,gitlab/gitlab-runner映像沒有可用的docker命令。 最簡單的解決方案是從主機登錄到您的註冊表在轉輪上運行:

docker login your.registry:5000

之後,安裝~/.docker/config.json在你gitlab亞軍實例/root/.docker/config.json

要在構建期間推送圖像,請參閱Eduardo Cardoso的答案。