Como configurar o gitlab-runner para ser executado no mesmo host do docker que o gitlab?

7

Eu tenho uma instância do gitlab em execução em um contêiner de docker. Agora eu gostaria de configurar o gitlab-runner no mesmo host. Ambos estão em execução:

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

Registrei uma imagem do Docker como corredor compartilhado:

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]

A imagem registrada maven-java-8é uma imagem personalizada com o settings.xml correto e está listada em docker images.

Mas ainda assim o pipeline falha com:

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

O que eu interpreto enquanto tenta usar as imagens locais dentro do contêiner gitlab-runner.

A versão do GitLab é o gitlab-ce 9.2.7 e a versão do corredor é a v9.3.0.

O conteúdo do meu .gitlab-cy.yml é:

test:
  script:
    - mvn clean test

o que estou perdendo?

tgr
fonte

Respostas:

5

Resumo da gestão

Defina pull_policycomo "never"na [runners.docker]seção chamando:

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

Descrição detalhada

Parecia que o problema era uma confusão com imagens e volumes montados.

A documentação diz para configurar os corredores em:

/etc/gitlab-runner/config.toml

O que eu fiz, mas na máquina host. Ao executar gitlab-runnerem um contêiner de docker, ele monta um volume:

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

Isso significa que o arquivo de configuração no /etc/...contêiner está montado /srv/...na máquina host.

Neste arquivo, pull_policynão foi definido, o padrão é o alwaysque causou o meu problema em primeiro lugar.

tgr
fonte