Как сделать автодеплой при пуше в конкретную ветку в репозитории?

Sanu0074
На сайте с 31.08.2012
Offline
110
2618

Допустим есть Gitlab, с репозиторием test.git. В нем есть множество веток, и две основные master и qa. В процессе разработки, разработчики создают свои ветки которые соответствуют задачам, далее все это мержится через мержреквесты в ветку dev. Когда нужно выкатить релиз, есть необходимость делать деплой на тестовый сервер из ветки qa, и когда тест прошел успешно нужно сделать деплой на продакшн из ветки master.

Предположим что тестовый сервер и продакшн-сервер находятся на одной машине. В данный момент, после того как были подмержены все изменения из dev в qa, после пуша, я иду на сервер и выполняю там команду, что-то вроде этой:

git archive --remote=/git-data/repositories/root/test.git qa | tar -x -C /test-server/sites/test/

Если протестили и все ок, ветка qa мержится в master, и я опять иду на сервер, и выполняю такую команду:

git archive --remote=/git-data/repositories/root/test.git master | tar -x -C /prod-server/sites/test/

Это все напряжно, и хочется автоматизировать этот процесс. Хочется создать какой-нибудь bash-скрипт (например просто вбить в него эту же git archive покачто), который будет автоматически запускаться после внесения изменений в ветку master или qa. Например после пуша в qa сработает скрипт /home/testuser/deplloy-qa.sh, а после пуша в master сработает скрипт /home/testuser/deplloy-master.sh. Или же, можно было бы выполнять такие скрипты не автоматически при пуше, а из интерфейса Gitlab'a (что более интереснее, и на мой взгляд удобнее), там есть такие штуки как Builds/Runners - я не знаю можно ли их использоваться для решения моей задачи.

Буду признателен за полезные ответы, хотелось бы на моем примере понять и увидеть как можно решить задачу, и первым, и вторым способами.

D
На сайте с 09.07.2009
Offline
79
#1

Используйте webhooks в Gitlab.

http://stackoverflow.com/questions/17157969/how-do-i-create-a-gitlab-webhook

При пуше или пул реквесте гитлаб будет делать запрос на какой-то адрес, по которому вы располагаете примитивный сервер, который выполняет нужный вам shell.

Можете поискать готовые реализации на гитхабе обработчиков приходящих хуков.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий