Передача кредитов gitlab-ci runner, чтобы иметь возможность отправлять образ докера…?

Я настраиваю процесс gitlab-ci, но не понимаю, как мне управлять своими секретами ...

Итак, я успешно запустил gitlab / gitlab-runner в качестве контейнера докеров и зарегистрировал бегун докеров из gitlab / dind.

В этом случае я хочу просто создать образ докера из файла Docker, заполнить кеши, которые впоследствии будут использоваться другими сборками для тестирования интеграции ci. Это путем переноса его в мой частный реестр докеров. Мое определение .gitlab-ci.yml в этом случае просто:

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

Кажется достаточно простым, но, конечно, у меня здесь нет прав, поэтому он терпит неудачу:

Я только что пришел с дрона, где создал для этого файл .sec.

Но здесь я должен войти в систему, верно? Итак, я прочитал здесь

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

Проблема в том, что, поскольку я запускаю gitlab-runner из dockerized образа gitlab / gitlab-runner, кажется, там даже нет docker cli?

viktor@i7:/var/lib$ sudo docker exec -it gitlab-runner docker login
exec: "docker": executable file not found in $PATH

Любые советы высоко ценятся!

Обновление для уточнения:

Итак, конец журнала сборки gitlab-ci:

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

Хост-компьютер регистрируется в реестре как root. Пытаюсь войти в систему из контейнера докеров, у меня просто нет docker cli.

Я добавил флаг --docker-privileged при регистрации бегуна.

Я предполагаю, что учетные данные должны пройти через host -> gitlab-runner -> runner instance (dind)


person Viktor Hedefalk    schedule 07.04.2016    source источник
comment
Вы придумали, как войти в систему? В настоящее время я столкнулся с той же проблемой ...   -  person Thilo-Alexander Ginkel    schedule 05.05.2016


Ответы (2)


Если вы используете собственный реестр контейнеров GitLab, вам необходимо добавить следующее в раздел сценария вашего .gitlab-ci.yml файла:

docker login -u gitlab-ci-token -p "${CI_BUILD_TOKEN:-$CI_JOB_TOKEN}" docker.woodenstake.se

Если вы используете внешний реестр, я предлагаю вам добавить учетные данные в качестве переменных в вашу сборку в «Параметры проекта»> «Переменные», а затем вы можете добавить строку docker login -u "$USER_VAR" -p "$PASS_VAR" docker.woodenstake.se в файл .gitlab-ci.yml.

Должно получиться так:

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
person Eduardo Cardoso    schedule 31.05.2016

Чтобы использовать изображения из частного реестра, бегун должен иметь учетные данные. Как вы сами выяснили, в образе gitlab / gitlab-runner отсутствует команда docker. Самое простое решение - войти в реестр с хоста, на котором запущен бегун:

docker login your.registry:5000

После этого смонтируйте ~/.docker/config.json как /root/.docker/config.json в своем экземпляре gitlab-runner.

Чтобы отправить изображения во время сборки, обратитесь к ответу Эдуардо Кардосо.

person Martin    schedule 31.05.2016