Я пытаюсь научить свой образ Gitlab Runner получать пользовательские образы сборщика из моего личного реестра Docker (GCR работает в Google Cloud).
Что не сработало? Iсоздал пользовательский образ Gitlab Runner с правильно установленным ServiceAccount.Я начал в непривилегированном режиме, но с червоточиной (через docker.sock
).При выполнении в этом контейнере (который основан на gitlab/gitlab-runner:v11.3.0
) мне пришлось признать, что я не могу делать там какие-либо команды docker (ни как root, ни как пользователь gitlab).То, как gitlab-runner запускает контейнеры-сборщики впоследствии, намного выше моих когнитивных способностей.;)
# got started via eu.gcr.io/my-project/gitlab-runner:0.0.5 which got taught the GCR credentials
stages:
- build
build:
image: docker pull eu.gcr.io/my-project/gitlab-builder-docker:0.0.2
stage: build
script:
# only for test if I have access to private docker registry
- docker pull eu.gcr.io/my-project/gitlab-builder-docker:0.0.1
Что сработало? Согласно этому учебному пособию вы можете проходить аутентификацию с помощью блока before_script
в файлах .gitlab-ci.yml
.Это сработало.
# got started via gitlab/gitlab-runner:v11.3.0
stages:
- build
before_script:
- apk add --update curl python which bash
- curl -sSL https://sdk.cloud.google.com | bash
- export PATH="$PATH:/root/google-cloud-sdk/bin"
- gcloud components install docker-credential-gcr
- gcloud auth activate-service-account --key-file=/key.json
- gcloud auth configure-docker --quiet
build:
image: docker:18.03.1-ce
stage: build
# only for test if I have access to private docker registry
- docker pull eu.gcr.io/my-project/gitlab-builder-docker:0.0.1
Вопрос Это означает, что я должен делать это (устанавливать gcloud & authenticate) при каждом запуске сборки - я бы предпочел сделать это в gitlabизображениеУ вас есть идея, как этого добиться?