Задача такая:
Разрабы пушат в свой репозиторий. В результате пуша делается диплой на тестовый стенд.
Да, знаю, в идеале нужно собрать контейнер и натравить свои тесты на него, а я пока так не умею, я заливаю по ssh на стенд и хочу вызвать процесс тестирования (вызвать pipeline тестирующего репозитория).
Для такого извращения есть механизм webhooks.
В тестирующем репо создаю триггер: Settings->CI / CD -> Pipeline Triggers
Называю этот триггер как-то и тычу "создать". Триггер создан. Ему присвоили ТОКЕН, который я должен вписать в url, чтобы "дёрнуть" его снаружи.
На странице прилагаются примеры скриптов, "как можно дёрнуть триггер".
Вариант 1
Первое, что я попробовал - это webhook со стороны репозитория разрабов.
Нужно как-то дождаться окончания диплоя и только потом "дёргать триггер"
Удалил вебхук.
Вариант 2
На странице с тестовым репо зашёл опять в Settings->CI / CD -> Pipeline Triggers и скопировал
кусок скрипта
Не заработало.
В контейнере, который я использовал для диплоя (image: ubuntu) не оказалось curl.
Рецепты гуглятся за 5 сек
Пока искал, нашёл, что image с бубунтой весит 186Мб (и они не включили в него curl!), а есть alpine linux, который весит 5Мб!!!
Нафиг убунту, вписал image: alpine
Переделал apt-get на apk
script:
- apk --no-cache add curl
- curl -X POST -F token="$TEST_TOKEN" -F ref=master https://gitlab.com/api/v4/projects/NNNNNN/trigger/pipeline
Разрабы пушат в свой репозиторий. В результате пуша делается диплой на тестовый стенд.
Да, знаю, в идеале нужно собрать контейнер и натравить свои тесты на него, а я пока так не умею, я заливаю по ssh на стенд и хочу вызвать процесс тестирования (вызвать pipeline тестирующего репозитория).
Для такого извращения есть механизм webhooks.
В тестирующем репо создаю триггер: Settings->CI / CD -> Pipeline Triggers
Называю этот триггер как-то и тычу "создать". Триггер создан. Ему присвоили ТОКЕН, который я должен вписать в url, чтобы "дёрнуть" его снаружи.
На странице прилагаются примеры скриптов, "как можно дёрнуть триггер".
Вариант 1
Первое, что я попробовал - это webhook со стороны репозитория разрабов.
- В репозитории разрабов Settings->Integrations
- Вписал на push ивент url, который мне сгенерировал gitlab.
- Запустил разрабовский pipeline (диплой проекта на сервер)
Заработало!
Из минусов: не учел, что вебхук срабатывает сразу же после пуша, ещё до того, как разрабовский проект задиплоился на сервер.Нужно как-то дождаться окончания диплоя и только потом "дёргать триггер"
Удалил вебхук.
Вариант 2
На странице с тестовым репо зашёл опять в Settings->CI / CD -> Pipeline Triggers и скопировал
кусок скрипта
trigger_build: stage: deploy script: - "curl -X POST -F token=TOKEN -F ref=REF_NAME https://gitlab.com/api/v4/projects/NNNNNN/trigger/pipeline"который вставил в .gitlab-ci.yml разрабовского репозитория. Ну, поменял stage, естественно.
Не заработало.
В контейнере, который я использовал для диплоя (image: ubuntu) не оказалось curl.
Рецепты гуглятся за 5 сек
- Использовать контейнер с предустановленным curl (ну, нафиг, они все частные, я окую)
- Сделать ap-tget update; apt-get install curl
Пока искал, нашёл, что image с бубунтой весит 186Мб (и они не включили в него curl!), а есть alpine linux, который весит 5Мб!!!
Нафиг убунту, вписал image: alpine
Переделал apt-get на apk
script:
- apk --no-cache add curl
- curl -X POST -F token="$TEST_TOKEN" -F ref=master https://gitlab.com/api/v4/projects/NNNNNN/trigger/pipeline
Заработало!
Из минусов: разрабовский диплой отрабатывает, "дёргает триггер" и зеленеет. А потом запускаются тесты. Некрасиво :(
Комментариев нет:
Отправить комментарий