Допустим есть 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 - я не знаю можно ли их использоваться для решения моей задачи.
Буду признателен за полезные ответы, хотелось бы на моем примере понять и увидеть как можно решить задачу, и первым, и вторым способами.