Ответ
В 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-тестов. Это основа стратегии непрерывного тестирования.