много проектов, которые запускают параллельные сборки, иногда deploy токены перезаписываются и проект не может выкатить образ в реестр, помогли сборки docker in docker. Но для некоторых проектов нужно запускать команду в опеределенном образе, которому нужна папка git, но в таком случае, даже если делать docker run -v $(pwd):/src, то в последней папке не будет проектов, причем docker build отрабатывает нормально. Можно выкрутиться используя другой раннер и артифакты, но хотелось бы один использовать. Как-то вообще можно смонтировать папку с текущим проектом внутрь другого контейнера, в DinD?
Можно сделав volume на хосте и монтируя его в оба контейнера
а почему deploy токены перезаписываются? В том же jenkins если серкетом является файл, он каждый раз рандомный создает и сразу удаляет и пофиг что сборки параллельные
тогда получается нужно предварительно копировать код в этот volume. Раннер работает только с папкой /build. А есть пример?
в /home/gitlab-runner/.docker/config.json - этот файл и перезаписывается. То есть, когда делается запись в раннере docker login -u $TOKEN и тд - то создается новый файл
печально. Странно сделано
Может опишешь с конкретикой?
ох накажут... а по сабжу - артефактов не хватает?
shell раннер раньше был. Сейчас на DinD перешел из-за перезаписи токенов, но в нем свои косяки. Можно конечно через какой-нибудь ansible сделать десяток пользователей изолированных, но это ацкие костыли.
А там нет специального метода для логина в registry. Типо как в jenkins docker.withRegistry("https://example.com", 'secret-credentails-name') { ... } Вот эта штука, создает свой config.json для конкретной сборки
артифакт могу генерить через shell раннер только, в DinD такая же проблема - не монтируется папка с проектом, если docker run запускать.
Я все равно не понимаю нафиг тебе динд в этом случае
Я так понимаю, этот вопрос вообще вне плоскости k8s лежит, лучше его задать здесь https://t.me/ru_gitlab И когда сделаете это, то раскройте сеттинг подробнее, потому что ЯННП, как и большинство здесь
погоди, ну ты же можешь DOCKER_CONFIG делать уникальным для конкретного билда. Тот же jenkins через него скорее всего и делает. Создаешь DOCKER_CONFIG=`mktemp` docker login ... docker build... docker push... rm -f ${DOCKER_CONFIG]
так вроде ж нет. https://gitlab.com/gitlab-org/gitlab-runner/-/issues/2745 Но за совет спасибо, попробую
Дык там же решение в явном виде написано
Ничерта не понял, нет такого раннера в гитлабе. есть докер-раннер, в него можно докер сокет с хоста прокинуть. Это называется ДИНД ?
Обсуждают сегодня