Мы используем GitlabHQ и Gitlab-CI в нашей инфраструктуре. Имея такой набор непрерывной интеграции, мы готовы настраивать логику сборки в CI.
Прямо сейчас при новой фиксации GitlabHQ запускает перехват CI, который сообщает gitlab-ci-runner о необходимости запустить сборку или тест.
У Runner есть жестко запрограммированная логика (по крайней мере, не настраиваемая в веб-интерфейсе), и перед запуском пользовательских скриптов выдает следующие команды:
cd $HOMEDIR/gitlab-ci-runner/tmp/builds && git clone git@$GITLABSERVER:root/test1.git project-1 && cd project-1 && git checkout $COMMIT cd $HOMEDIR/gitlab-ci-runner/tmp/builds/project-1 && git reset --hard && git checkout $COMMIT
а затем пользовательские сценарии идут
Чего я хочу:
Возникает вопрос: попадался ли кто-нибудь в подобную ситуацию? Есть ли хороший способ обойти отсутствие необходимых опций?
Прямо сейчас я использую очень грязный хак: заменил двоичный файл git на сценарий bash с именем 'git', который улавливает параметры, переданные в git, и запускает его внутри виртуальной машины, но это, похоже, не очень хороший способ ИМО.
Не уверен, что это то, что вы хотите, но вы можете полностью отключить извлечение кода из git, установив для GIT_STRATEGY значение none:
variables:
GIT_STRATEGY: none
https://docs.gitlab.com/ce/ci/yaml/#git-strategy
Чтобы запускать команды перед выполнением задания, вы можете использовать директиву before_script
before_script is used to define the command that should be run before all jobs, including deploy jobs, but after the restoration of artifacts. This can be an array or a multi-line string.
https://docs.gitlab.com/ce/ci/yaml/#before_script-and-after_script