DevOps и инфраструктура

Учебник GitLab CI/CD для начинающих

27 уроков · 9 разделов · бесплатно, без регистрации

Этот курс — глубокое погружение в GitLab CI/CD: встроенную в GitLab систему непрерывной интеграции и доставки. Мы разберём всё от первой джобы в .gitlab-ci.yml до полноценного пайплайна веб-приложения с тестами, сборкой Docker-образа, деплоем в Kubernetes и сканами безопасности. По ходу курса мы постоянно проводим параллели с GitHub Actions и Jenkins, чтобы вы понимали не только синтаксис, но и идеологию платформы. Курс для тех, кто уже знаком с Git и базовой идеей CI/CD и хочет уверенно строить и отлаживать пайплайны на GitLab.

Курс «GitLab CI/CD» состоит из 9 разделов и 27 уроков: Знакомство с GitLab CI/CD, GitLab Runner и жизненный цикл пайплайна, Анатомия джобы, Артефакты, кеш и секреты, Управление запуском джоб, Docker, тесты и качество в пайплайне, Деплой и окружения, Kubernetes, переиспользование и безопасность и Эксплуатация: отладка, оптимизация и реальный пайплайн. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.

Программа курса

  1. 1 Знакомство с GitLab CI/CD

    1. CI/CD за пять минут и место GitLab в нём

      Короткое напоминание о непрерывной интеграции и доставке и о том, как GitLab закрывает весь конвейер одной платформой.

    2. Экосистема GitLab: репозиторий, MR, реестр, issues

      Обзор компонентов GitLab, с которыми взаимодействует CI/CD: Merge Requests, Container Registry, environments и issue-трекер.

    3. Первый .gitlab-ci.yml: стадии и джобы

      Структура .gitlab-ci.yml: ключевые слова stages и jobs, минимальный рабочий пайплайн и порядок выполнения.

  2. 2 GitLab Runner и жизненный цикл пайплайна

    1. GitLab Runner: shared, specific и executor'ы

      Виды раннеров GitLab, executor'ы docker/shell/kubernetes и как раннер забирает и выполняет джобы.

    2. Регистрация раннера на практике

      Как установить и зарегистрировать GitLab Runner с docker-executor, теги раннеров и привязка джоб к раннеру.

    3. Жизненный цикл пайплайна и триггеры

      Триггеры пайплайна в GitLab: push, merge request, schedule, tag, manual, и из чего складывается статус пайплайна.

  3. 3 Анатомия джобы

    1. script, before_script, after_script и image

      Ключевые поля джобы: script, before_script, after_script, image и переменные на уровне джобы.

    2. Стадии, порядок и DAG-пайплайны с needs

      Управление порядком джоб: последовательные стадии против DAG-пайплайнов через needs для ускорения и зависимостей.

    3. Переменные на уровне джобы и предопределённые переменные

      Объявление переменных в .gitlab-ci.yml, область видимости job/global и предопределённые CI-переменные GitLab.

  4. 4 Артефакты, кеш и секреты

    1. Артефакты: передача результатов между джобами

      Ключ artifacts в GitLab CI: что сохранять, передача между стадиями, expire_in и отчёты.

    2. Кеш против артефактов: ускоряем сборки

      Кеширование зависимостей в GitLab CI: cache, ключи кеша, отличие от артефактов и ускорение пайплайна.

    3. CI/CD-переменные и секреты: masked и protected

      Секреты в GitLab CI: переменные проекта, masked и protected, скоуп environments и безопасная работа с токенами.

  5. 5 Управление запуском джоб

    1. rules, only/except и условный запуск

      Современный механизм rules в GitLab CI против устаревших only/except: условный запуск джоб по ветке и источнику.

    2. workflow и ручные джобы (when: manual)

      Управление созданием пайплайна через workflow:rules и ручные джобы с when: manual, allow_failure и гейтами деплоя.

    3. Матричные джобы: parallel:matrix

      Параллельные матричные джобы в GitLab CI через parallel:matrix: тестирование на нескольких версиях и платформах.

  6. 6 Docker, тесты и качество в пайплайне

    1. Docker-in-Docker и kaniko: сборка образов

      Сборка Docker-образов в GitLab CI: docker-in-docker с сервисом dind, альтернатива kaniko и нюансы privileged.

    2. Тестирование, покрытие и отчёты

      Юнит-тесты в GitLab CI, отчёты JUnit, измерение покрытия кода и отображение результатов в Merge Request.

    3. Code Quality и статический анализ

      Встроенный Code Quality в GitLab CI: отчёт о качестве кода в Merge Request, линтеры и интеграция шаблонов.

  7. 7 Деплой и окружения

    1. Environments, staging и production

      Окружения деплоя в GitLab CI: ключ environment, история деплоев, откат и ручные гейты для production.

    2. Review apps: окружение на каждый MR

      Динамические окружения GitLab CI: review apps на каждый Merge Request, динамический URL и автоматическая остановка.

    3. Стратегии деплоя: rolling, canary, blue-green

      Обзор стратегий деплоя в CI/CD: rolling update, canary и blue-green, их компромиссы и место в пайплайне GitLab.

  8. 8 Kubernetes, переиспользование и безопасность

    1. Деплой в Kubernetes и Auto DevOps

      Деплой в Kubernetes из GitLab CI через kubectl и helm, подключение кластера и обзор Auto DevOps.

    2. include, extends и !reference: DRY-пайплайны

      Переиспользование конфигурации GitLab CI: include шаблонов, extends для наследования джоб и !reference для частей.

    3. Безопасность в пайплайне: SAST, DAST, dependency scanning

      Встроенные сканеры безопасности GitLab CI: SAST, DAST, dependency и container scanning, отчёты в Merge Request.

  9. 9 Эксплуатация: отладка, оптимизация и реальный пайплайн

    1. Отладка пайплайна: типичные ошибки

      Отладка GitLab CI: runner offline, ошибки прав, проблемы кеша, синтаксис YAML и инструменты диагностики.

    2. Оптимизация скорости и сравнение с альтернативами

      Ускорение пайплайнов GitLab CI: параллелизм, needs, кеш, fail fast, и сравнение с GitHub Actions и Jenkins.

    3. Реальный пайплайн: lint → test → build → deploy

      Полный практический пайплайн GitLab CI для веб-приложения: lint, тесты, сборка Docker-образа и деплой staging/production.