git деплой — процесс выкатки приложения из репозитория на production сервер. Проще всего автоматизации процесс добиться через git hooks.
Хук это небольшой скрипт, который выполняется при отправке файлов в репозиторий. Скрипт может предусматривать копирование данных на рабочий сервер, сборку и выполнение какого-то кода. Можно предусмотреть любую логику, чаще всего деплой через git вызывается командой git push в ветку master.
Для больших систем используются специализированные решения.
git деплой, развертывание приложения из git
Репозиторий на production сервере будет размещаться в отдельном каталоге, его нужно создать.
mkdir -p repo/site.git
cd repo/site.git/
Инициализируем директорию, при этом не создавая исходники. На выходе будет пустой каталог репозитория.
git init --bare
Initialized empty Git repository in /home/web/repo/site.git/
Создание git hook
mcedit hooks/post-receive
#!/bin/sh
GIT_WORK_TREE=/var/www/site.com git checkout -f
Здесь путь к каталогу с файлами сайта, от пути к репозиторию он будет отличаться.
Добавляем бит исполнения
chmod +x hooks/post-receive
hook будет выполняться после отправки данных в удаленный репозиторий (git push). Вызывается после всех обновлений.
На production сервере настройки завершены.
Настройки выполняемые локально
Теперь локальный репозиторий.
Задаем подключение к серверу
git remote add production ssh://[email protected]/home/web/repo/site.git/
Скорректировать на практике нужно имя пользователя, IP адрес сервера и путь к репозиторию.
Теперь из любой ветки репозитория можно заливать изменения на production выполняя push
git push production fix
В примере приведена ветка fix, это может быть master или любая другая.
За счет хуков достигается простейшая автоматизация. Вручную того же результата можно добиваться выполняя git push из локального репозитория в удаленный и git pull из удаленного на сервер.
При работе с git удобно пользоваться алиасами.
Большие приложения разворачиваются при помощи CI-CD систем таких как Jenkins и Gitlab CI.