Этот GitLab CI/CD пайплайн предназначен для автоматического развертывания (деплоя) кода на тестовые и продакшен-серверы linux websoft hcm в зависимости от ветки, в которую производится коммит.
Для корректной работы пайплайна на целевых серверах должны быть установлены:
- GitLab Runner - должен быть зарегистрирован и настроен для выполнения задач CI/CD
- Тестовый сервер: runner с тегом test
- Продакшен сервер: runner с тегом prod
- Git - для работы с репозиторием (клонирование, обновление кода)
- rsync - для эффективного копирования файлов (обычно предустановлен в Linux)
- На примере папки libs - cкопировать папку libs из образа websoft HCM на сервер в директорию (к примеру):
/opt/websoft/docker/WebSoftServerForDocker/wtv/libs
- Настроить bind mount на эту папку в Docker при запуске контейнера:
"-v /opt/websoft/docker/WebSoftServerForDocker/wtv/libs:/WebsoftServer/wtv/libs"
GitLab Repository
- │
- ├── Ветка "test" → GitLab Runner (tag: test) → Тестовый сервер
- │
- └── Ветка "prod" → GitLab Runner (tag: prod) → Продакшен сервер
- deploy - единственная стадия, отвечающая за развертывание приложения
DEPLOY_PATH_TEST_SERVER- путь к директории на тестовом сервереDEPLOY_PATH_PROD_SERVER- путь к директории на продакшен-сервереREPOSITORY_URL- URL Git-репозитория (вынесен в переменную для удобства)
Скрипт автоматически определяет, куда деплоить, на основе ветки:
- Ветка
test→ деплой на тестовый сервер - Ветка
prod→ деплой на продакшен-сервер
-
Клонирование/обновление репозитория
- Если папка
.gitотсутствует - клонирует репозиторий - Если существует - обновляет код из нужной ветки
- Если папка
-
Копирование файлов
- Используется
rsyncдля эффективного копирования - Исключаются ненужные файлы (
.git,.yml,.md) - Сохраняются права доступа и владельцы
- Используется
- deploy_test - срабатывает при коммитах в ветку
test - deploy_prod - срабатывает при коммитах в ветку
prod
- Используется
CI_JOB_TOKENдля безопасного доступа к репозиторию - Раздельные теги (
test/prod) гарантируют выполнение на правильных раннерах
- Шаблон (
deploy_template) исключает дублирование кода rsyncкопирует только измененные файлы- Четкое разделение сред (test/prod)
- Легко изменить пути деплоя через переменные
- Просто добавить новые среды при необходимости
- Разработчик пушит в ветку
test→ автоматический деплой на тестовый сервер - После тестирования пушит в ветку
prod→ автоматический деплой на продакшен
Это обеспечивает непрерывную доставку с четким разделением сред разработки.