Можно ли отлаживать сборку Gitlab CI в интерактивном режиме?

У меня есть сборка в Gitlab CI, которая требует много времени (10+ минут) для запуска, и очень раздражает ждать всего процесса каждый раз, когда мне нужно экспериментировать/вносить изменения. Кажется, что наверняка есть способ получить доступ к какой-то оболочке во время процесса сборки и интерактивно запускать команды вместо того, чтобы размещать их все в сценарии развертывания.

Я знаю, что можно запускать тесты Gitlab CI локально, но я не могу найти способ получить доступ к запущенному процессу развертывания, даже после изучения документации.

Мне не повезло или есть способ вручную управлять этой длинной сборкой?


person jamesfacts    schedule 29.09.2017    source источник
comment
пока вы используете образы докеров, вы все равно можете запускать свои задания локально (см., например, bryce.fisher-fleig.org/blog/faster-ci-debugging-with-gitlabci/ для получения полной справки) и перезапустите контейнеры/проверьте их (например, с помощью docker logs ) при неудаче   -  person Alfageme    schedule 16.10.2017
comment
Вы когда-нибудь находили решения для этого? Мне нужно протестировать интеграцию моих сборок с кластером Kubernetes, подключенным через их проприетарную панель, поэтому локальные сборки здесь не очень помогают. Я всегда делал это на travis-ci.com, поэтому просто предположил, что смогу сделать это и с GitLab. . Видимо ошибся ¯\_(ツ)_/¯   -  person Francesco Casula    schedule 16.03.2018
comment
@FrancescoCasula К сожалению, я до сих пор не решил эту проблему. Если я найду исправление, я обязательно обновлю ветку.   -  person jamesfacts    schedule 20.03.2018


Ответы (2)


Я пока не нашел чистого способа, но вот как я это делаю

  1. Я начинаю строить локально gitlab-runner exec docker your_build_name
  2. Я убиваю gitlab-runner с помощью control + c сразу после сборки образа докера. Вы по-прежнему можете добавить команду sleep 1m в качестве первой строки скрипта, чтобы иметь достаточно времени, чтобы убить gitlab-runner Примечание: gitlab-runner создаст докер, а затем удалит его, как только задание будет выполнено… его удаление гарантирует, что докер все еще существует - на данный момент я не знаю другой альтернативы....
  3. Вручную войти в контейнер docker exec -i -t <instance-id/tag-name> bash
  4. Запустите команды скрипта вручную…
person Flavien Volken    schedule 22.02.2019
comment
Этот подход работает для меня, но обратите внимание, что задания создаются в /builds внутри контейнера, поэтому после выполнения docker exec -i -t <instance-id/tag-name> bash вы должны запустить cd /builds/project-0/, и там вы найдете корень задания. - person Juampy NR; 15.08.2019
comment
Что вы подразумеваете под «your_build_name»? Я успешно установил и зарегистрировал gitlab-runner на своем локальном компьютере. - person Keerthivasan; 22.10.2020

Вы можете взглянуть на экран задания в вашем конвейере вашего проекта.

пример: https://yourgitlab.de/vendor/project/-/jobs

Кнопка для нажатия в веб-интерфейсе

Благодаря цепочке конвейеров и заданий вы можете разделить каждую задачу развертывания/сборки вашего проекта.

person episch    schedule 29.09.2017
comment
Конечно, я знаю о процессе, связанном с наблюдением за выполнением задания. Что меня раздражает, так это то, что мне нужно запустить длительный процесс сборки, прежде чем я смогу узнать, будут ли изменения, которые я сделал в конце развертывания, работать правильно. Насколько я могу судить, разделение задач не поможет, потому что мне все равно нужно перезапускать все предыдущие задачи с каждой ревизией. Я действительно предпочел бы приостановить развертывание на 80% и поиграть с несколькими вариантами. - person jamesfacts; 03.10.2017