Деплой в GitLab CI/CD выполняется через конфигурирование файла .gitlab-ci.yml в корневом каталоге проекта. В этом файле определяются пайплайны, стейджи и джобы.
Типичный процесс деплоя включает:
- Сборка: Создание артефактов (образов Docker, исполняемых файлов и т.д.).
- Тестирование: Выполнение Unit, Integration и End-to-End тестов.
- Деплой: Развертывание артефактов на целевых окружениях.
Пример .gitlab-ci.yml для деплоя Docker образа:
yaml
Ключевые концепции:
- Stages: Определяют последовательность выполнения джоб.
- Jobs: Конкретные задачи, выполняемые в стейджах. Могут использовать различные Docker образы.
- Runners: Агенты, выполняющие джобы. Могут быть shared, specific, or group.
- Variables: Используются для хранения чувствительных данных или конфигурации. Могут быть предопределенными или пользовательскими (в настройках CI/CD).
- Environments: Позволяют связывать деплои с конкретными окружениями (staging, production). Упрощают отслеживание версий и откаты.
- Rules/Only/Except: Определяют, когда должна выполняться джоба.
Для деплоя на различные платформы используются соответствующие инструменты:
| Платформа | Инструмент | Пример использования в .gitlab-ci.yml |
|---|
| Kubernetes | kubectl, Helm | Использование образа с kubectl или Helm |
| Docker Swarm | docker | Использование образа docker |
| Cloud Platforms (AWS, GCP, Azure) | AWS CLI, gcloud, az | Использование образов с соответствующими CLI |
| SSH | ssh | Использование образа с ssh и выполнением команд |
Оптимизация деплоя включает:
- Кеширование: Ускоряет сборку.
- Параллельное выполнение джоб: Сокращает время пайплайна.
- Blue/Green или Canary деплой: Для снижения рисков.
Конфиденциальные данные (пароли, ключи API) следует хранить в CI/CD переменных с маской.