2017-08-05 93 views
5

Gitlab提供了一個.gitlab-ci.yml模板,用於構建和發佈圖像到自己的註冊表(點擊項目中的「新文件」,選擇.gitlab-ci.ymldocker)。該文件看起來像這樣,它開箱即用:)如何從gitlab-ci發佈碼頭圖像到碼頭集線器

# This file is a template, and might need editing before it works on your project. 
# Official docker image. 
image: docker:latest 

services: 
    - docker:dind 

before_script: 
    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY 

build-master: 
    stage: build 
    script: 
    - docker build --pull -t "$CI_REGISTRY_IMAGE" . 
    - docker push "$CI_REGISTRY_IMAGE" 
    only: 
    - master 

build: 
    stage: build 
    script: 
    - docker build --pull -t "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG" . 
    - docker push "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG" 
    except: 
    - master 

但默認情況下,這將發佈到gitlab的註冊表。我們如何才能發佈到docker hub而不是?

回答

7

根本不需要改變那個.gitlab-ci.yml,我們只需要在項目的管道設置中添加/替換環境變量。

首先,我們需要知道註冊表url。使用hub.docker.com將無法​​正常工作,您會收到以下錯誤:

Error response from daemon: login attempt to https://hub.docker.com/v2/ failed with status: 404 Not Found

默認泊塢窗樞紐註冊網址可以發現這樣的:

docker info | grep Registry 
Registry: https://index.docker.io/v1/ 

index.docker.io是我正在尋找。我想出版gableroux/unity3d image,這是我在使用管道的祕密:

CI_REGISTRY_USER=gableroux 
CI_REGISTRY_PASSWORD=******** 
CI_REGISTRY=index.docker.io 
CI_REGISTRY_IMAGE=index.docker.io/gableroux/unity3d 

CI_REGISTRY_IMAGE是設置重要。需要
它默認爲registry.gitlab.com/<username>/<project>
regsitry URL進行更新,以便使用index.docker.io/<username>/<project>
由於碼頭工人樞紐是默認的註冊表,你也可以使用<username>/<project>代替,但我更喜歡當它的冗長。所以這個答案也應該包括其他註冊表,只是相應地更新環境變量。

相關問題