2016-04-07 4 views
1

Ich bin ein gitlab-ci-Prozess einrichten, aber ich habe Probleme zu verstehen, wie ich meine Geheimnisse verwalten soll ...Übergeben von Krediten an gitlab-ci-Läufer, um Docker-Bild zu schieben ...?

So habe ich erfolgreich einen gitlab/gitlab-Läufer als Docker Container gestartet und registriert docker runner von gitlab/dind.

Die Sache, die ich in diesem Fall erstellen möchte, ist einfach ein Docker-Bild aus einem Dockerfile aufzubauen, Caches zu füllen, um später von anderen CI-Integration Test Builds verwendet werden. Dies, indem Sie es in meine private Docker-Registrierung hochschieben. Meine .gitlab-ci.yml Definition in diesem Fall ist nur:

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 

scheint einfach genug, aber natürlich habe ich kein creds hier so ist es nicht:

Ich kam gerade aus Drohne, wo ich ein generierter .sec Datei dafür.

Aber hier sollte ich einloggen, oder? Also habe ich hier gelesen

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

Problem, da ich renne Gitlab-Läufer aus dem dockerized Gitlab/Gitlab Starter Bild, hat es nicht einmal scheint einen Docker cli zu sein?

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

Alle Tipps sehr geschätzt!

Update für Klarstellung:

So ist der Schwanz des Gitlab-ci Buildprotokoll ist:

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 

Die Host-Maschine wird in der Registrierung als root angemeldet. Wenn ich versuche, mich über den Andock-Container einzuloggen, habe ich noch nicht einmal docker cli.

Ich habe die --docker-privileged Flagge auf der Registrierung des Läufers hinzugefügt.

Ich denke, die Anmeldeinformationen über den Host passieren muss -> Gitlab Starter -> Läufer-Instanz (Dind)

+0

Haben Sie herausgefunden, wie Sie sich anmelden? Ich stehe derzeit vor dem gleichen Problem ... –

Antwort

5

Wenn Sie Gitlab eigene Container Registrierung mit Ihnen auf Ihrem folgenden Skript Abschnitt hinzuzufügen. Gitlab-ci.yml Datei:

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

Wenn Sie eine externe Registrierung verwenden, empfehle ich Ihnen die Anmeldeinformationen als Variablen zu Ihrer Build auf Projekteinstellungen hinzufügen> Variablen, dann können Sie die Zeile docker login -u $USER_VAR -p $PASS_VAR docker.woodenstake.se addieren, gitlab-ci.yml-Datei.

Es soll wie folgt aussehen:

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

Um Bilder von einer privaten Registrierung zu verwenden, die Läufer die Anmeldeinformationen haben muss. Wie Sie selbst herausgefunden haben, verfügt das Bild gitlab/gitlab-runner nicht über den Befehl docker. Die einfachste Lösung ist, um Ihre Registrierung vom Host einzuloggen, wo der Läufer läuft auf:

docker login your.registry:5000

Danach hängen ~/.docker/config.json als /root/.docker/config.json in Ihrer Gitlab-Läufer-Instanz.

Um Bilder während Ihres Builds zu pushen, beziehen Sie sich auf die Antwort von Eduardo Cardoso.

Verwandte Themen