Какие события могут быть триггерами для запуска пайплайна CI/CD?

«Какие события могут быть триггерами для запуска пайплайна CI/CD?» — вопрос из категории DevOps, который задают на 10% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Пайплайн CI/CD обычно запускается автоматически при наступлении определенных событий в системе контроля версий (VCS). Основные триггеры:

  1. Изменения в коде:

    • Push в целевую ветку (например, main, develop).
    • Создание или обновление Pull Request / Merge Request.
    • Push определенного тега (git tag).
  2. Ручной запуск: Пользователь вручную запускает пайплайн через UI (например, кнопка "Run pipeline") или API.

  3. По расписанию (Scheduled/Pipeline schedules): Запуск в заданное время (по аналогии с cron), например, для ночных сборок или регрессионных тестов.

  4. Внешние события (Webhooks/API):

    • Вебхук из внешней системы (например, Jira, Slack).
    • Прямой вызов API CI/CD-системы.

Пример конфигурации (GitLab CI):

stages:
  - test
  - build
  - deploy

# Запускается только для пуша в main и для MR
unit_tests:
  stage: test
  script:
    - run_tests.sh
  rules:
    - if: $CI_COMMIT_BRANCH == "main"
    - if: $CI_PIPELINE_SOURCE == "merge_request_event"

# Запускается только вручную или по расписанию для main
deploy_to_staging:
  stage: deploy
  script:
    - deploy.sh staging
  rules:
    - if: $CI_COMMIT_BRANCH == "main" && ($CI_PIPELINE_SOURCE == "schedule" || $CI_PIPELINE_SOURCE == "web")
      when: manual # Требует ручного подтверждения