hostprofi.ru
Подобрать хостинг
Термин·буква G

Git deploy

краткое определение

Git deploy — деплой приложения через git-репозиторий: код обновляется на сервере через git pull или git push (bare repository + post-receive хук). Простейший способ автоматизировать деплой без CI/CD системы. Подходит для небольших проектов и персональных серверов.

Git deploy — подход к деплою, при котором обновление кода на сервере происходит через операции git. Есть два основных паттерна: простой git pull на сервере и push-to-deploy через bare repository с хуком post-receive.

Паттерн 1: git pull

# На сервере: клонировать репозиторий
git clone git@github.com:user/myapp.git /var/www/myapp

# Деплой: SSH на сервер и git pull
ssh user@server "cd /var/www/myapp && git pull && systemctl reload nginx"

Паттерн 2: Push-to-Deploy (bare repository)

# На сервере: создать bare репозиторий
mkdir -p /srv/repos/myapp.git
git init --bare /srv/repos/myapp.git

# Создать хук post-receive
cat > /srv/repos/myapp.git/hooks/post-receive << 'EOF'
#!/bin/bash
GIT_WORK_TREE=/var/www/myapp git checkout -f main
cd /var/www/myapp && npm install && systemctl reload nginx
EOF
chmod +x /srv/repos/myapp.git/hooks/post-receive

# Локально: добавить сервер как remote
git remote add production user@server:/srv/repos/myapp.git

# Деплой: просто git push
git push production main

Capistrano и деплой-инструменты

Capistrano (Ruby), Deployer (PHP), Fabric (Python) — инструменты для автоматизации деплоя через SSH: атомарные деплои с rollback, управление конфигами, zero-downtime деплои.

История

Git создан Линусом Торвальдсом в 2005 году. Хуки Git (post-receive) появились с первых версий. Heroku (2007) популяризировал git push deploy. Capistrano — с 2006 года. В 2010-х CI/CD системы заменили простые git-хуки для сложных проектов.

Связь с хостингом

Git deploy — отправная точка автоматизации деплоя на VDS до появления полноценного CI/CD. Для PHP/Node.js проектов: git push → post-receive хук → composer install/npm build → reload PHP-FPM/Nginx. Heroku-образный деплой для своего сервера без инструментов вроде GitHub Actions.

История Git Deploy

Git создан Линусом Торвальдсом в апреле 2005 года за 2 недели. Концепция деплоя через git push popularized Heroku в 2009 году: git push heroku main — и приложение задеплоено. git-receive-pack + post-receive hook — механизм, на котором строятся все git-деплои. Caistrano (2006), Mina (2013), Deployer (2014) — Ruby/PHP инструменты автоматизации деплоя. Git deploy используется в 90%+ проектов на современном хостинге.

Подходы к Git Deploy

МетодСложностьПодходит для
post-receive hookнизкаяпростые проекты, VPS
CI/CD pipelineсредняякомандные проекты
Heroku-style (dokku)средняяPaaS на VPS
GitHub Actions + SSHсредняяGitHub-проекты
ArgoCD/FluxCDвысокаяKubernetes GitOps

Практический пример git deploy на VPS

# На сервере: создание bare-репозитория
git init --bare /var/repos/mysite.git
# Хук post-receive
cat /var/repos/mysite.git/hooks/post-receive
#!/bin/bash
git --work-tree=/var/www/mysite checkout -f

После этого: git remote add production user@server:/var/repos/mysite.git и git push production main деплоит изменения автоматически.

Типичные ошибки

  • Деплой напрямую в main-ветку без тестирования — сломанный код сразу в продакшне.
  • Не настроено откатывание: при проблемах нужен git push --force предыдущего коммита.
  • Секреты (.env) в git-репозитории — никогда не коммитьте credentials.

При использовании Nginx + git deploy рекомендуется включить автоматическую сборку CSS/JS через hook: npm run build или composer install после каждого деплоя. Для WordPress: WP-CLI (wp cache flush) очищает кеш после деплоя. Логи деплоя пишутся в /var/log/deploy.log для аудита.

Другие термины