Какие типы триггеров для CI/CD пайплайнов вы настраивали и для каких задач?

Ответ

Да, я настраивал различные триггеры в CI/CD системах, в основном в GitHub Actions и GitLab CI. Выбор триггера зависит от конкретной задачи и рабочего процесса.

Вот основные типы триггеров и их применение на моем опыте:

  1. При коммите или Pull Request (on: [push, pull_request])

    • Задача: Гарантия качества кода. Это основной триггер для запуска тестов, линтинга и сборки приложения при каждом изменении в ветках main, develop или в feature-ветках, на которые создаются Pull Request.
    • Пример (GitHub Actions):
      on:
      push:
      branches: [ main ]
      pull_request:
      branches: [ main ]
  2. По расписанию (on: schedule)

    • Задача: Выполнение регулярных, фоновых задач.
    • Примеры использования:
      • Запуск долгих E2E-тестов в ночное время, чтобы не замедлять основной CI.
      • Ежедневное сканирование зависимостей на уязвимости.
      • Генерация периодических отчетов.
    • Пример (ежедневно в 3:00 UTC):
      on:
      schedule:
      - cron: '0 3 * * *'
  3. Вручную (on: workflow_dispatch)

    • Задача: Запуск пайплайна по требованию, обычно для контролируемых действий.
    • Примеры использования:
      • Деплой приложения на staging или production окружение.
      • Запуск ресурсоемкой задачи, например, миграции данных.
    • Пример:
      on: workflow_dispatch
  4. По событию в репозитории (например, создание тега или релиза)

    • Задача: Автоматизация процессов релиза.
    • Пример использования: При создании нового тега (например, v1.2.0) автоматически собирается релизный артефакт, публикуется Docker-образ и создается GitHub Release.
    • Пример (при создании тега):
      on:
      push:
      tags:
        - 'v*.*.*'

В GitLab CI для более сложных условий я использовал директиву rules, которая позволяет гибко комбинировать условия запуска, например: запускать только для тегов И только если переменная окружения установлена.