Используем git для деплояПОмимо контроля версий кода git можно использовать как простой инструмент развертывания сервисов и приложений на любой сервер. Есть несколько методов деплоймента с помощью git`a, я же опишу наиболее распространенный и корректный. Git hooks По факту - хуки (hooks) это небольшие скрипты которые запускаются git-ом при наступлении различных событий, что создает возможность добавлять нестандартный функционал обычным командам git-a.
Итак, приступим. Для начала на сервере установим git-клиент и создадим необходимый репозиторий:
cd /var mkdir repository cd repository mkdir somesite.git cd somesite.git git init --bare # Опция --bare создаст нам репозиторий
Далее создаем нужный нам hook. В Git также есть примеры скриптов-триггеров: applypatch-msg.sample pre-push.sample commit-msg.sample pre-rebase.sample post-update.sample prepare-commit-msg.sample pre-applypatch.sample update.sample pre-commit.sample # Хуки размещаются в дирректории ./hooks Вариантов тут масса, но я использую хук post-receive. Вот примерно с таким содержанием #!/bin/sh cd /var/www/somesite.com git checkout master git pull # Чекаут ветки master и pull ее содержимого Такой скрипт можно написать на Bash, Perl, Python (главное, чтобы на сервере был установлен необходимый интерпретатов). Также этому скрипту нужно установить флаги исполнения: chmod +x hooks/post-receive # Разрешаем исполнение скрипта Теперь переходим к локальному git, который будет передавать данные на сервер. Не забываем задать удаленный путь в git такой командой: git remote add production ssh://[email protected]/var/repository/somesite.git # Таких путей может быть несколько Вот и все. Теперь по выполнении команды git push на вашей локальной машине git выполнить переключение в ветку master и за-pull-ит все изменения на сервер. git push production master
|