Я искал способ реализовать конвейер CI / CD в моих проектах. Я решил использовать Gitlab с его технологией gitlab-runner. Я пытался использовать его через docker контейнеров, но после более чем 100 попыток решил установить его на машине.
Я шаг за шагом следовал официальному руководству Gitlab . Все работает отлично; Я запускаю регистр, правильно заполняю все поля и go включаю, чтобы записать .gitlab-ci.yml:
image: docker:latest
services:
- docker:18.09.9-dind
stages:
- deploy
step-deploy-prod:
stage: deploy
only:
- master
script:
- docker-compose up -d --build
when: always
environment: master
Как вы можете представить, глядя на файл yml, когда какая-то операция выполняется на главном устройстве, конвейер запускается и банально выполняет команду docker -compose up --build -d (рассматриваемый проект - это приложение PHP с базой данных SQL, развернутое через compose).
Первый запуск: Абсолютно идеально; конвейер запускается, сборка выполняется правильно и правильно помещается в оперативный режим
Второй и следующие 140 запусков: Это кошмар. Более 140 сборок потерпели неудачу по той же причине; при клонировании репозитория бегун, похоже, не имеет прав на запись в свой домашний каталог (/ home / gitlab-runner / builds / ...).
Если я вручную удалю вложенную папку внутри сборок / бегун будет работать, но только для одного запуска, то такая же ситуация.
Я пытался:
- запустить chown gitlab-runner: gitlab-runner в его домашнем каталоге (также как pre_clone_script в файле TOML);
- добавить gitlab-runner в группу sudoers;
- Я добавил gitlab-runner в группу docker;
- ряд операций с правами доступа к файлам, затем chmod 777, chgrp с группой runner и многое другое .