Как настроить триггеры Pipeline в Jenkins?

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

Ответ

В Jenkins триггеры определяют, когда запускается пайплайн. Настройка зависит от типа пайплайна (Declarative или Scripted).

1. Declarative Pipeline (рекомендуется) Триггеры задаются в секции triggers.

pipeline {
    agent any
    triggers {
        // 1. Опрос SCM (Git) по расписанию (неэффективно, лучше вебхуки)
        pollSCM('H/5 * * * *') // Проверяет репо каждые 5 минут

        // 2. Запуск по таймеру (например, для nightly-тестов)
        cron('H 2 * * *') // Запускается каждый день в 2 ночи

        // 3. Запуск после успешной сборки другого проекта (upstream)
        upstream(upstreamProjects: 'build-main', threshold: hudson.model.Result.SUCCESS)
    }
    stages {
        stage('Test') {
            steps {
                sh './run-tests.sh'
            }
        }
    }
}

2. Scripted Pipeline Используется метод properties.

properties([pipelineTriggers([
    [$class: 'GitLabPushTrigger'], // Через плагин GitLab
    cron('H 8 * * 1-5') // По будням в 8 утра
])])
node {
    // ... этапы пайплайна
}

Современный подход (рекомендация для QA):

  • Вебхуки (Webhooks) — вместо pollSCM. При пуше в Git-репозиторий (GitHub, GitLab, Bitbucket) сервер отправляет запрос в Jenkins, что запускает сборку мгновенно и без лишней нагрузки. Настраивается в плагинах (GitHub plugin, GitLab plugin).
  • Триггер по завершению другого пайплайна (upstream) — полезно для организации цепочек: сборка -> развертывание на стенд -> запуск E2E-тестов. Это основа стратегии непрерывного тестирования.