2017-08-05 59 views
5

Gitlab udostępnia szablon .gitlab-ci.yml do budowania i publikowania obrazów w swoim własnym rejestrze (kliknij "nowy plik" w jednym ze swoich projektów, wybierz .gitlab-ci.yml i docker). Plik wygląda tak i działa po wyjęciu z pudełka :)Jak publikować obrazy doków do stacji dokującej z 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 

Ale domyślnie zostanie to opublikowane w rejestrze gitlab. Jak możemy zamiast tego opublikować numer na docker hub?

Odpowiedz

7

Nie trzeba w ogóle zmieniać tego .gitlab-ci.yml, wystarczy tylko dodać/zastąpić zmienne środowiskowe w ustawieniach potoku projektu.

Najpierw musimy znać adres URL rejestru. Korzystanie hub.docker.com nie będzie działać, otrzymasz następujący błąd:

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

domyślny adres URL rejestru piasta doker można znaleźć tak:

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

index.docker.io to co ja szukałem. Chciałem opublikować gableroux/unity3d image, oto co użyłem w tajemnice rurociągu:

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

CI_REGISTRY_IMAGE ważne jest, aby ustawić.
Domyślnie jest registry.gitlab.com/<username>/<project>
regsitry url musi być aktualizowany więc używać index.docker.io/<username>/<project>
Od Piasta doker jest domyślne rejestru, można również użyć <username>/<project> zamiast, ale wolę kiedy jest gadatliwy. Tak więc ta odpowiedź powinna również obejmować inne rejestry, po prostu zaktualizuj zmienne środowiskowe odpowiednio.