Назад в блог

Как настроить автоматическое развертывание с Git на VPS

Как настроить автоматическое развертывание с Git на VPS

Git — самая популярная система контроля версий в области разработки программного обеспечения. Это проект с открытым исходным кодом, который активно поддерживается с 2005 года Линусом Торвальдсом, известным создателем Linux. Сегодня огромное количество программных проектов (включая коммерческие) используют Git для управления версиями.

Git использует распределенную архитектуру, что делает его отличным примером DVCS (распределенной системы контроля версий). Используя Git, мы можем одновременно управлять как локальным, так и удаленным репозиторием. В этом руководстве мы покажем, как настроить автоматическое развертывание проекта Git с помощью VPS.

Предварительные требования

В этом руководстве будет один локальный репозиторий и один удаленный репозиторий на VPS. Локальный репозиторий будет отправлять изменения в удаленный репозиторий. Из удаленного репозитория мы можем отправить изменения в ветку beta или  live . Чтобы добиться этого, вам сначала нужно позаботиться о нескольких предварительных требованиях.

Для установления безопасного соединения с VPS мы будем использовать SSH. К счастью, Git также поддерживает SSH в качестве протокола для подключения к удаленным репозиториям. В этом руководстве рассматривается настройка SSH для подключения к удаленным серверам на Ubuntu.

Настройка VPS

На нашем удаленном сервере будет следующая конфигурация:

  • Рабочий каталог (Live): /var/www/dummy-domain.com
  • Репозиторий сервера: /var/repo/site.git

С локальной машины Git будет отправлять обновления в репозиторий VPS. В репозитории VPS мы настроим скрипт, который Git будет использовать для автоматической отправки файлов в рабочий каталог. Также можно настроить репозиторий для релизов beta.

  • Создание репозиториев

Подключитесь к VPS и создайте директории для репозиториев:

Deployment with Git screenshot 1

Затем инициализируйте репозиторий Git:

Deployment with Git screenshot 2

Здесь флаг --bare указывает на то, что исходных файлов не будет, а будут только компоненты контроля версий.

  • Хуки (Hooks)

Далее мы настроим хуки для репозитория. Каждый репозиторий Git содержит папку с именем hooks. Она содержит примеры файлов, которые служат шаблонами для хуков и различных пользовательских действий.

Согласно официальной документации Git, существует три типа хуков:

  • pre-receive: Выполняется, как только сервер получает запрос на отправку (push).
  • post-receive: Выполняется после завершения запроса на отправку.
  • update: Аналогичен pre-receive. Однако он выполняется один раз для каждой ветки.

Из директории репозитория выполните команду ls:

Deployment with Git code screenshot 3

Измените текущий каталог на hooks:

Deployment with Git code screenshot 4

Теперь создайте скрипт post-receive:

Внутри скрипта введите следующий код. Обязательно измените пути к каталогам соответствующим образом:

Deployment with Git code screenshot 6

Сохраните файл и закройте редактор. Сделайте файл исполняемым:

Deployment with Git code screenshot 7

Теперь каждый раз при завершении отправки Git будет обращаться к скрипту post-receive и соответствующим образом размещать файлы.

Настройка локальной машины

Удаленная машина готова принимать обновления проекта Git. Далее мы настроим локальный репозиторий для использования VPS в качестве удаленного Git-сервера.

Давайте создадим тестовую директорию проекта Git:

Configuring the Local Machine

Deployment with Git code screenshot 8

sample Git project directory:

Теперь инициализируйте репозиторий:

Deployment with Git code screenshot 9

Нам нужно указать удаленный путь к репозиторию. Здесь мы будем ссылаться на удаленное расположение как на ветку live . Затем выполните следующую команду:

sudo git remote

Давайте протестируем это. Мы добавили shell-скрипт в директорию проекта:

project directory

Затем добавьте файл в проект и сделайте коммит:

Deployment with Git code screenshot 10

В следующей команде мы отправим проект на рабочий сервер:

Deployment with Git code screenshot 11

Git подключится к VPS по SSH. Если SSH-соединение было настроено на использование пароля, Git запросит пароль для аутентификации.

Бета-репозиторий

Что если проект не должен развертываться в один этап? Возможно, ему требуется дополнительное тестирование в beta директории. Используя описанный метод, мы можем создать еще одну ветку на VPS, называемую beta веткой.

  • Настройка ветки Beta на VPS

Сначала нам нужно создать директории на VPS. Подключитесь к VPS и создайте директорию в /var/www:

Теперь нам нужен Git-репозиторий, который будет выступать в качестве ветки beta:

Инициализируйте репозиторий:

sudo git init

Как и прежде, реализуйте скрипт post-receive:

sudo nano

После этого введите следующий код:

GNU nano

Сохраните файл и закройте редактор. Сделайте post-receive исполняемым файлом:

sudo chmod
  • Добавление бета-репозитория на локальную машину

Теперь мы готовы добавить репозиторий beta в наш локальный репозиторий. Из директории локального проекта выполните следующую команду Git:

Вуаля! Локальный репозиторий теперь настроен с удаленным бета-репозиторием. Попробуйте отправить изменения:

sudo git add
  • Перенос из Beta в Live на VPS

Допустим, все изменения накоплены в репозитории beta . Как отправить изменения в репозиторий live ? Это очень просто. Внутри репозитория beta на VPS мы добавляем локальный репозиторий live . Затем мы просто отправляем релиз beta в репозиторий live .

Подключитесь к VPS и выполните следующие команды:

Затем вы можете отправить релиз beta в live:

sudo git push live master

Заключительные мысли

В этом руководстве успешно продемонстрировано, как настроить и использовать VPS в качестве удаленного репозитория для вашего Git-проекта. VPS может автоматически развертывать новейший код и файлы без каких-либо сложных процессов. Он также может выступать в качестве центра для совместной работы нескольких команд разработчиков.

С помощью Git вы можете создать простой механизм автоматического развертывания. Однако для правильного управления проектами рекомендуется использовать что-то вроде GitLab. В следующем руководстве показано установка и развертывание GitLab на VPS для управления несколькими проектами. Вы также можете ознакомиться с тем, как настроить конвейеры непрерывной интеграции (CI) GitLab на Ubuntu 20.04.

Приятной работы!

author

Hark Labs

Автор · CloudSigma

Preslav Dobrev — креативный дизайнер в CloudSigma, сосредоточенный на формировании последовательного корпоративного образа с помощью традиционных и инновационных маркетинговых каналов. Он умело сочетает художественное видение со стратегическим маркетингом, создавая убедительные истории бренда.

Комментарии

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