Wie konfiguriere ich Gitlab-Runner so, dass es auf demselben Docker-Host wie Gitlab ausgeführt wird?

7

Ich habe eine Gitlab-Instanz, die in einem Docker-Container ausgeführt wird. Jetzt möchte ich Gitlab-Runner auf demselben Host einrichten. Beide laufen:

docker container ls
CONTAINER ID        IMAGE                         COMMAND                  CREATED              STATUS                 PORTS                                                            NAMES
279473dceb2f        gitlab/gitlab-runner:alpine   "/usr/bin/dumb-ini..."   About a minute ago   Up About a minute                                                                       gitlab-runner
6d7af0d6b946        gitlab/gitlab-ce:latest       "/assets/wrapper"        2 hours ago          Up 2 hours (healthy)   0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:8022->22/tcp   gitlab

Ich habe ein Docker-Image als freigegebenen Läufer registriert:

concurrent = 1
check_interval = 0

[[runners]]
  name = "default shared maven runner"
  url = "http://url-of-my-gitlab.instance"
  token = "valid token"
  executor = "docker"
  [runners.docker]
    pull_policy = "never"
    tls_verify = false
    image = "maven-java-8:latest"
    privileged = false
    disable_cache = false
    volumes = ["/cache"]
    shm_size = 0
  [runners.cache]

Das registrierte Bild maven-java-8ist ein benutzerdefiniertes Bild mit der richtigen settings.xml und wird in aufgelistet docker images.

Trotzdem versagt die Pipeline mit:

Running with gitlab-ci-multi-runner 9.3.0 (3df822b)
  on Maven Test (5b2573e4)
Using Docker executor with image maven-java-8 ...
Using docker image  sha256:c266311d78b33f89f6eecce00f19a0428e37ba6af6734c8fced32fa11e4bd4ba for predefined container...
Pulling docker image maven-java-8 ...
ERROR: Job failed: Error response from daemon: repository maven-java-8 not found: does not exist or no pull access

Was ich so interpretiere, als würde es versuchen, die lokalen Bilder im Gitlab-Runner-Container zu verwenden.

Die GitLab-Version ist gitlab-ce 9.2.7 und die Runner-Version ist v9.3.0.

Der Inhalt meiner .gitlab-cy.yml ist:

test:
  script:
    - mvn clean test

Was vermisse ich?

tgr
quelle

Antworten:

5

Management-Zusammenfassung

Setzen Sie das pull_policyauf "never"in den [runners.docker]Abschnitt, indem Sie Folgendes aufrufen:

docker exec -it gitlab-runner \
  vi /etc/gitlab-runner/config.toml

detaillierte Beschreibung

Es schien, dass das Problem eine Verwechslung mit Bildern und bereitgestellten Volumes war.

In der Dokumentation heißt es, Läufer zu konfigurieren in:

/etc/gitlab-runner/config.toml

Was ich getan habe, aber auf dem Host-Computer. Wenn es gitlab-runnerin einem Docker-Container ausgeführt wird, wird ein Volume bereitgestellt:

... -v /srv/gitlab-runner/config:/etc/gitlab-runner ...

Dies bedeutet, dass die Konfigurationsdatei im /etc/...Container /srv/...auf dem Hostcomputer bereitgestellt wird.

In dieser Datei pull_policywurde das nicht gesetzt, was standardmäßig so ist always, was letztendlich mein Problem überhaupt verursacht hat.

tgr
quelle