Git — самая популярная система контроля версий в области разработки программного обеспечения. Это проект с открытым исходным кодом, который активно поддерживается с 2005 года Линусом Торвальдсом, известным создателем Linux. Сегодня огромное количество программных проектов (включая коммерческие) используют Git для управления версиями.
Git использует распределенную архитектуру, что делает его отличным примером DVCS (распределенной системы контроля версий). Используя Git, мы можем одновременно управлять как локальным, так и удаленным репозиторием. В этом руководстве мы покажем, как настроить автоматическое развертывание проекта Git с помощью VPS.
Предварительные требования
В этом руководстве будет один локальный репозиторий и один удаленный репозиторий на VPS. Локальный репозиторий будет отправлять изменения в удаленный репозиторий. Из удаленного репозитория мы можем отправить изменения в ветку beta или live . Чтобы добиться этого, вам сначала нужно позаботиться о нескольких предварительных требованиях.
- Локальная машина и удаленный сервер, оба под управлением операционной системы Ubuntu. В этом руководстве показано, как настроить и установить серверы Ubuntu.
- Обе машины настроены с использованием Git.
Для установления безопасного соединения с VPS мы будем использовать SSH. К счастью, Git также поддерживает SSH в качестве протокола для подключения к удаленным репозиториям. В этом руководстве рассматривается настройка SSH для подключения к удаленным серверам на Ubuntu.
Настройка VPS
На нашем удаленном сервере будет следующая конфигурация:
- Рабочий каталог (Live): /var/www/dummy-domain.com
- Репозиторий сервера: /var/repo/site.git
С локальной машины Git будет отправлять обновления в репозиторий VPS. В репозитории VPS мы настроим скрипт, который Git будет использовать для автоматической отправки файлов в рабочий каталог. Также можно настроить репозиторий для релизов beta.
-
Создание репозиториев
Подключитесь к VPS и создайте директории для репозиториев:
|
1 2 3 |
cd /var sudo mkdir -pv repo && cd repo sudo mkdir -pv site.git && cd site.git |
Затем инициализируйте репозиторий Git:
|
1 |
sudo git init --bare |
Здесь флаг --bare указывает на то, что исходных файлов не будет, а будут только компоненты контроля версий.
-
Хуки (Hooks)
Далее мы настроим хуки для репозитория. Каждый репозиторий Git содержит папку с именем hooks. Она содержит примеры файлов, которые служат шаблонами для хуков и различных пользовательских действий.
Согласно официальной документации Git, существует три типа хуков:
- pre-receive: Выполняется, как только сервер получает запрос на отправку (push).
- post-receive: Выполняется после завершения запроса на отправку.
- update: Аналогичен pre-receive. Однако он выполняется один раз для каждой ветки.
Из директории репозитория выполните команду ls:
|
1 |
ls -l |
Измените текущий каталог на hooks:
|
1 |
cd hooks/ |
Теперь создайте скрипт post-receive:
|
1 |
sudo nano post-receive |
Внутри скрипта введите следующий код. Обязательно измените пути к каталогам соответствующим образом:
|
1 2 |
#!/bin/sh git --work-tree=/var/www/dummy-domain.com --git-dir=/var/repo/site.git checkout -f |
Сохраните файл и закройте редактор. Сделайте файл исполняемым:
|
1 |
sudo chmod +x post-receive |
Теперь каждый раз при завершении отправки Git будет обращаться к скрипту post-receive и соответствующим образом размещать файлы.
Настройка локальной машины
Удаленная машина готова принимать обновления проекта Git. Далее мы настроим локальный репозиторий для использования VPS в качестве удаленного Git-сервера.
Давайте создадим тестовую директорию проекта Git:
Теперь инициализируйте репозиторий:
|
1 |
sudo git init |
Нам нужно указать удаленный путь к репозиторию. Здесь мы будем ссылаться на удаленное расположение как на ветку live . Затем выполните следующую команду:
|
1 |
sudo git remote add live ssh://<remote_username>@<remote_ip_address>/var/repo/site.git |
Давайте протестируем это. Мы добавили shell-скрипт в директорию проекта:
Затем добавьте файл в проект и сделайте коммит:
|
1 2 |
sudo git add . sudo git commit -m "random commit" |
В следующей команде мы отправим проект на рабочий сервер:
|
1 |
sudo git push live master |
Git подключится к VPS по SSH. Если SSH-соединение было настроено на использование пароля, Git запросит пароль для аутентификации.
Бета-репозиторий
Что если проект не должен развертываться в один этап? Возможно, ему требуется дополнительное тестирование в beta директории. Используя описанный метод, мы можем создать еще одну ветку на VPS, называемую beta веткой.
-
Настройка ветки Beta на VPS
Сначала нам нужно создать директории на VPS. Подключитесь к VPS и создайте директорию в /var/www:
|
1 2 |
cd /var/www sudo mkdir beta |
Теперь нам нужен Git-репозиторий, который будет выступать в качестве ветки beta:
|
1 2 |
cd /var/repo sudo mkdir -pv beta.git && cd beta.git |
Инициализируйте репозиторий:
|
1 |
sudo git init --bare |
Как и прежде, реализуйте скрипт post-receive:
|
1 2 |
cd hooks sudo nano post-receive |
После этого введите следующий код:
|
1 2 |
#!/bin/sh git --work-tree=/var/www/beta --git-dir=/var/repo/beta.git checkout -f |
Сохраните файл и закройте редактор. Сделайте post-receive исполняемым файлом:
|
1 |
sudo chmod +x post-receive |
-
Добавление бета-репозитория на локальную машину
Теперь мы готовы добавить репозиторий beta в наш локальный репозиторий. Из директории локального проекта выполните следующую команду Git:
|
1 |
sudo git remote add beta ssh://<username>@<remote_ip_address>/var/repo/beta.git |
Вуаля! Локальный репозиторий теперь настроен с удаленным бета-репозиторием. Попробуйте отправить изменения:
|
1 2 3 |
sudo git add . sudo git commit -m "beta version" sudo git push beta master |
-
Перенос из Beta в Live на VPS
Допустим, все изменения накоплены в репозитории beta . Как отправить изменения в репозиторий live ? Это очень просто. Внутри репозитория beta на VPS мы добавляем локальный репозиторий live . Затем мы просто отправляем релиз beta в репозиторий live .
Подключитесь к VPS и выполните следующие команды:
|
1 2 |
cd /var/repo/beta.git sudo git remote add live ../site.git |
Затем вы можете отправить релиз beta в live:
|
1 |
sudo git push live master |
Заключительные мысли
В этом руководстве успешно продемонстрировано, как настроить и использовать VPS в качестве удаленного репозитория для вашего Git-проекта. VPS может автоматически развертывать новейший код и файлы без каких-либо сложных процессов. Он также может выступать в качестве центра для совместной работы нескольких команд разработчиков.
С помощью Git вы можете создать простой механизм автоматического развертывания. Однако для правильного управления проектами рекомендуется использовать что-то вроде GitLab. В следующем руководстве показано установка и развертывание GitLab на VPS для управления несколькими проектами. Вы также можете ознакомиться с тем, как настроить конвейеры непрерывной интеграции (CI) GitLab на Ubuntu 20.04.
Приятной работы!















Комментарии
Комментариев пока нет. Будьте первым.