В статье пойдёт речь о том как из GitLab сделать деплой на удалённый хостинг. В качестве целевой системы выбран сайт на платформе cms Bitrix.
И так что мы имеем:
- GitLab установленный и настроенный на своём локальном сервере. Сервер используется для разработки, а так же он является репозитарием различных git проектов.
- Сайт работающий на удалённом хостинге (пусть это будет Beget).
- В качестве cms — Bitrix
- В качестве deploy системы будет использован встроенный инструмент GitLab CI
В текущей статье не говорится о том как настроить и установить GitLab, а так же как создать там репозитарий и зарегистрировать пользователя.
Что потребуется предварительно сделать:
Добавить в GitLab специальных «бегунов». Это обработчики которые будут выполнять наши инструкции после определённых действиях(т.е выполнять сам деплой проекта)
Чтобы создать «бегунка» перейдите в консоль сервера с GitLab:
1 2 3 |
gitlab-runner register |
Если команда выдаст ошибку, тогда дополнительно установите gitlab-runner в вашу систему
gitlab-runner во время создания нового «бегунка» задаст вопросы:
1. Вам нужно будет указать адрес вашего GitLab домена
2. На запрос токена — укажите токен из админки GitLab «Настройки» — «CI/CD» — «Обработчики заданий»
3. Описание можете не изменять
4. Теги: Укажите короткий тег на который будет реагировать «бегунок» при поиске заданий (например all)
Далее у вас появится в админке ваш обработчик(бегунок)

Далее необходимо задать системные переменные для подстановки в ваше сценарий деплоя. В нашем примере это:
- Адрес сервера/хостинга на котором лежит сайт (доступ по ssh)
- Имя пользователя ssh
- Пароль ssh

После предварительной настройке (описанной выше) вам необходимо создать файл инструкций в корне вашего git проекта.
Название файла:
1 2 3 |
.gitlab-ci.yml |
Содержимое:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
stages: - testdeploy testdeploy: stage: testdeploy script: echo "Запуск деплоя testdeploy" #Задачи которые нужно выполнить перед сборкой проекта before_script: - yum update -qq && yum install -y -qq sshpass # установка доп софта - если вы не сделали это заранее #Процесс сборки deploy_staging: stage: testdeploy #стадия определённая выше environment: name: staging when: manual # Указываем что сборку запустим вручную tags: - all #Тэг для бегунка (на этот тег реагирует определённый бегунок) only: - master script: - echo "Деплой теста запущен" - cd /home/gitlab-runner/builds/YDbNxKDi/0/coderun2/testsite.ru #заходим в папку с нашей git веткой мастер - sshpass -V #Вывод информации о версии консольной программы - export SSHPASS=$SSH_TEST_PSWD #Передаем пароль из переменных - sshpass -e rsync --exclude '.git' --exclude '.gitlab-ci.yml' -avzh . $SSH_TEST_USER@$SSH_TEST_SERVER:www/coderun.ru |
Собственно сама процедура выгрузки на удалённый хостинг проходит при помощи последней команды
1 2 3 |
- sshpass -e rsync --exclude '.git' --export '.gitlab-ci.yml' -avzh . $SSH_TEST_USER@$SSH_TEST_SERVER:www/coderun.b2 |
Операция обмена происходит при помощи консольной утилиты rsync, в качестве переменных SSH_TEST_USER и SSH_TEST_SERVER команда использует определенные в админке GitLab системные переменные.
Вместо rsync можно использовать scp или другие консольные утилиты для копирования данных между серверами в зависимости от ваших потребностей.
Так как в конфиге задано условие ручной сборки:
1 2 3 |
when: manual |
После слияния какой либо ветки в ветку master создаётся задание на сборку с ручным запуском

В статье приведены лишь базовые понятия и руководство к действию по сборке ваших проектов. Вариантов использования технологии и автоматизации ручного труда огромное множество.
У меня вопрос, в адресе ssh $SSH_TEST_USER@$SSH_TEST_SERVER:www/coderun.b2
после двоеточия в конце идет вот это www/coderun.b2 , на что нужно это заменить? или можно убрать? и для чего это?
статья очень полезная, для начинающего, но вот вопросы всетаки есть)
В данном случае это путь до целевого каталога. Вам необходимо заменить его на свой путь, или оставить пустым, если подключение сразу выдаёт целевой каталог.