2016-04-07 1 views
1

Я настраиваю процесс gitlab-CI, но у меня возникают проблемы с пониманием, как я должен управлять своими секретами ...Передача кредитов на gitlab-ci бегун, чтобы иметь возможность нажать изображение докера ...?

Так что я успешно пущена в gitlab/gitlab-бегуна грузчиком контейнера и зарегистрирован докер-бегун из 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-бегун из в dockerized gitlab/gitlab-бегун изображение, там не даже, кажется, грузчиком есть интерфейс командной строки?

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

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

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

Так хвост журнала сборки gitlab-КИ:

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 

Хост машина регистрируется в реестре в качестве корня. Пытаясь входить в систему из контейнера докеров, у меня просто нет докеров-кли.

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

Я предполагаю, что учетные данные нужно пройти через хост -> gitlab-бегун -> бегун экземпляра (dind)

+0

Вы выяснили, как войти в систему? В настоящее время я сталкиваюсь с той же проблемой ... –

ответ

5

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

docker login -u gitlab-ci-token -p $CI_BUILD_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 
1

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

docker login your.registry:5000

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

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

Смежные вопросы