Pull to refresh

Используем Git в качестве инструмента для деплоя веб приложения

Reading time1 min
Views11K
Привет, Хабросообщество!

Продолжая тему использования git хуков, хочу вам рассказать о post-merge и post-checkout

Что имеем


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

Что предлагает нам Git


post-merge — Этот хук вызывается 'git-merge', после того, как мы выполнили 'git-pull' или 'git-merge' на локальном репозитории. Хук не выполнится, если у нас будут конфликты при мердже.
post-checkout — Этот хук вызывается 'git-checkout', после того, как мы выполним 'git-clone' или 'git-checkout'.

Что делаем


Механизм деплоя будет примерно таким:
1. Поднимаем git сервер. Переводим всю разработку на git. Протестированный код заливаем в репозиторий
2. Пишем хуки, которые будут делать то, что нам нужно сделать после деплоя. В данном случае хук post-merge.
3. Если хотим развернуть рабочую конфигурацию на чистом сервере, то пишем хук post-checkout

К примеру, нам после деплоя надо почистить какую-то папку и перезагрузить апач.
#!/bin/bash
/etc/init.d/apache2 stop
find /path/to/folder -type f -delete
/etc/init.d/apache2 start


Положим этот скрипт в .git/hooks/post-merge.
Выполняем git pull и у нас выполняется этот скрипт

Аналогично и для хука post-checkout

Плюсы:


  • Быстрая доставка изменений на продакшн.
  • Автоматизация
  • Централизированное хранение рабочего веб проекта


Минусы:


  • Данная схема не будет работать, если мы будем создавать новые ветки, путем git checkout -b newBranch
  • Данная схема не будет работать, если мы будем вручную мерджить изменения в локальном хранилище.


UPD: Цель не в том, чтобы показать единственный и кошерный вид деплоя, а в том, как можно еще юзать гит хуки. И да, я знаю о Capistrano, Vlad the Deployer, Chef (solo), Puppet и других
Tags:
Hubs:
Total votes 20: ↑14 and ↓6+8
Comments13

Articles