Я запускаю Jenkins 2 с плагином Pipeline. У меня есть проект с несколькими ветвями, где каждая ветвь (master, develop и т.д.) Имеет в корне файл Jenkins. Настройка этого была простой. Тем не менее, я не понимаю, как каждую ветвь запускать периодически (а не индексацию ветвей), даже если код не изменяется. Что мне нужно, чтобы добавить в свой файл Jenkins, чтобы включить периодические сборки?
"Строить периодически" с многоотраслевым трубопроводом в Дженкинсе
Ответ 1
Если вы используете декларативный стиль Jenkinsfile, вы используете директиву triggers.
pipeline {
agent any
triggers {
cron('H 4/* 0 0 1-5')
}
stages {
stage('Example') {
steps {
echo 'Hello World'
}
}
}
}
Ответ 2
Если вы используете конвейер декларативного стиля и хотите только инициировать сборку на определенной ветке, вы можете сделать что-то вроде этого:
String cron_string = BRANCH_NAME == "master" ? "@hourly" : ""
pipeline {
agent none
triggers { cron(cron_string) }
stages {
// do something
}
}
Найдено на Jenkins Jira
Ответ 3
Я смог найти пример, иллюстрирующий это отбрасывание старых сборников, что тоже я хотел.
Jenkinsfile
в jenkins-infra/jenkins.io:
properties(
[
[
$class: 'BuildDiscarderProperty',
strategy: [$class: 'LogRotator', numToKeepStr: '10']
],
pipelineTriggers([cron('H/30 * * * *')]),
]
)
Ответ 4
Это работает для меня:
triggers {
cron(env.BRANCH_NAME == 'development' ? 'H */12 * * *' : '')
}
Подробнее в этой статье
Ответ 5
Для параметризованных периодических запусков или запланированных триггеров можно использовать следующее.
triggers{
parameterizedCron env.BRANCH_NAME == "develop" ? '''H 03 * * * % buildSlave=vm1;testSlave=vm2;HYPERVISOR=vbox;VERSION=10.5.0.0
H 03 * * * % buildSlave=vm1;testSlave=vm2;HYPERVISOR=workstation;VERSION=10.5.0.0''' : ""
}