📘 GitLab CI/CD
1. Общие сведения
Наименование:
GitLab CI (непрерывная интеграция) / GitLab CI/CD (CI + CD)
Описание:
GitLab CI/CD — это встроенная система автоматизации сборки, тестирования и развертывания приложений, которая полностью интегрирована в GitLab. Позволяет настраивать рабочие процессы (pipelines), запускаемые по событиям (например: push, merge request).
Тип системы:
Система автоматизации / Сервер непрерывной интеграции и доставки
Класс: CI/CD Tool, DevOps Platform
Разработчик:
GitLab Inc.
Год выпуска:
2015 год (интеграция CI в GitLab)
Лицензия:
Open Source (CE – Community Edition), Proprietary (EE – Enterprise Edition)
Сайт: https://about.gitlab.com/product/continuous-integration/
2. Основные компоненты
Компонент | Описание |
---|---|
Pipeline (пайплайн) | Автоматизированный процесс, состоящий из одного или нескольких этапов |
Stage (этап) | Логический шаг пайплайна (например: build, test, deploy) |
Job (задача) | Конкретное действие внутри stage |
Runner | Исполнитель задач (может быть shared, group или project-level) |
.gitlab-ci.yml | YAML-файл в корне проекта, описывающий конвейер |
Variables | Переменные окружения для хранения секретов и параметров среды |
Environments | Представление сред (dev, staging, production) с возможностью деплоя и просмотра статуса |
3. Основные функции
Функция | Описание |
---|---|
Непрерывная интеграция (CI) | Автоматическая сборка и тестирование кода |
Непрерывная доставка / развертывание (CD) | Автоматический или полуавтоматический деплой |
Многоплатформенность | Поддерживает Windows, Linux, macOS |
Работа с контейнерами | Интеграция с Docker, возможность запуска в контейнерах |
Встроенный мониторинг | Отслеживание успешности билдов, метрик и времени выполнения |
Интеграция с Kubernetes | Простая настройка кластеров и деплоя через Helm |
Security Scanning | Встроенные средства проверки уязвимостей (SAST, DAST, Dependency Scanning) |
Web-интерфейс | Удобное управление и отладка пайплайнов через браузер |
4. Пример .gitlab-ci.yml
stages:
- build
- test
- deploy
build_job:
stage: build
script:
- echo "Building the app..."
- make build
test_job:
stage: test
script:
- echo "Running tests..."
- make test
deploy_job:
stage: deploy
environment:
name: production
url: https://your-app.com
script:
- echo "Deploying to production..."
- make deploy
only:
- main
5. Преимущества использования GitLab CI/CD
✅ Полностью встроено в GitLab — нет необходимости подключать внешние инструменты
✅ Pipeline as Code — вся логика в одном файле .gitlab-ci.yml
✅ Подходит для любого языка программирования и фреймворка
✅ Масштабируемость и гибкость — от маленьких до enterprise-проектов
✅ Бесплатный план для открытых и приватных репозиториев
✅ Встроенные средства безопасности и анализа кода
✅ Поддержка Kubernetes, Docker, Terraform и других DevOps-инструментов
6. Использование в проектах
Этап | Возможности |
---|---|
Разработка | Запуск автоматических тестов при каждом коммите |
Code Review | Проверка качества кода при создании Merge Request |
Тестирование | Запуск unit-, интеграционных и end-to-end тестов |
Деплой | Автоматическое обновление dev, staging и production сред |
CI/CD pipeline | Полностью автоматизированный жизненный цикл разработки |
Обучение | Изучение DevOps-процессов, GitOps подхода и автоматизации |
7. Альтернативы GitLab CI/CD
Инструмент | Особенности |
---|---|
GitHub Actions | Встроенное решение GitHub, удобно при использовании GitHub как VCS |
Jenkins | Мощный open-source CI/CD с гибкой настройкой |
CircleCI | Облачный CI/CD с мощными возможностями параллелизма |
Travis CI | Простой и легковесный облачный CI |
Azure DevOps Pipelines | Microsoft-решение с мощной интеграцией в Azure |
TeamCity (JetBrains) | Простой в освоении, особенно популярен среди Java-разработчиков |
8. Интеграции
Интеграция | Описание |
---|---|
Docker Hub / GitLab Container Registry | Сборка и публикация образов |
Kubernetes | Деплой в кластеры через Helm, kubectl и другие средства |
AWS / GCP / Azure | Интеграция через CLI, API, плагины |
Slack / MS Teams / Email | Уведомления о состоянии сборок |
SonarQube | Анализ качества кода |
Terraform / Ansible | Автоматизация инфраструктуры и конфигураций |
Artifactory / Nexus | Хранение бинарных артефактов |