Автодеплоинг git-проектов на виртуальном хостинге

Цель: Настроить автоматическое разворачивание git-проектов на серверах виртуального хостинга. По результату у вас будет возможность публиковать файлы сайта напрямую в веб-директорию, используя для этого отдельную production-ветку в проекте.

1. Переходим в Панель управления хостингом из личного кабинета и добавляем www-сайт, в котором будет деплоится содержимое git-репозитория:

Примечание: полный путь к директории сайта будет в нашем случае: /home/git-test/www/git-test.activeby.net

2. Добавляем репозиторий для нашего проекта:

Примечание: полный путь к репозиторию будет: /home/git-test/git/repo.git

3. Редактируем post-recieve хук в директории с репозиторием:

4. Записываем в хук следующее содержимое, предварительно удалив оттуда всю прежнюю информацию:

#!/bin/sh
while read oldrev newrev ref
do
  branch=`echo $ref | cut -d/ -f3`
  if [ "production" = "$branch" ]; then
    GIT_WORK_TREE=/home/git-test/www/git-test.activeby.net GIT_DIR=/home/git-test/git/repo.git git checkout -f $branch
    echo 'changes pushed to git-test.activeby.net'
  fi
done

Примечание: Аналогично можно добавлять и другие ветки (добавляя новый if-блок в скрипт), которые будут деплоиться в разные www-директории. Например, для beta в beta.<domain.tld> и т.п.

5. Подключаем на своем компьютере созданный репозиторий:

$ mkdir git-test

$ cd git-test/
$ git init
$ git remote add origin ssh://git-test@by104.activeby.net/home/git-test/git/repo.git

# Создаем php-файл для проверки, выводящий лишь phpinfo()

$ echo -e "<?php\nphpinfo();\n?>" > phpinfo.php
$ git add .
$ git commit -m "initial commit"

# Заливаем файл в master-ветку репозитория
$ git push -u origin master
git-test@by104.activeby.net's password:
Counting objects: 3, done.
Writing objects: 100% (3/3), 236 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To ssh://git-test@by104.activeby.net/home/git-test/git/repo.git
* [new branch]      master -> master
Branch master set up to track remote branch master from origin.

# Добавляем ветку production, которая будет использоваться для деплоя проекта
$ git checkout -b production
Switched to a new branch 'production'

# Заливаем файлы в эту ветку на сервере
$ git push origin production
git-test@by104.activeby.net's password:
Total 0 (delta 0), reused 0 (delta 0)
Switched to branch 'production'
changes pushed to git-test.activeby.net
To ssh://git-test@by104.activeby.net/home/git-test/git/repo.git
* [new branch]      production -> production

6. Смотрим содержимое веб-директории сайта и видим, что содержимое git-репозитория появилось внутри:

7. Проверяем, что в браузере залитый скрипт успешно отрабатывает:



Если решение вопроса найти не удалось, Вы можете отправить нам заявку:



(18 голос(а))
Эта статья помогла
Эта статья не помогла

Комментарии (0)