Skip to content

📘 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 Хранение бинарных артефактов