我正在运行Jenkins 2与管道插件。我已经设置了一个多分支管道项目,其中每个分支(主,开发等)在根有一个Jenkinsfile。设置这个很简单。然而,我不知道如何让每个分支定期运行(而不是分支索引),即使代码没有改变。我需要在我的Jenkinsfile中放入什么来启用定期构建?
如果您使用声明式风格的Pipeline,并且只想触发特定分支上的构建,您可以这样做:
String cron_string = BRANCH_NAME == "master" ? "@hourly" : ""
pipeline {
agent none
triggers { cron(cron_string) }
stages {
// do something
}
}
发现于Jenkins Jira
如果你使用的是声明式的Jenkinsfile,那么你可以使用triggers指令。
pipeline {
agent any
triggers {
cron('H 4/* 0 0 1-5')
}
stages {
stage('Example') {
steps {
echo 'Hello World'
}
}
}
}
这是为我工作:
pipeline {
triggers {
cron(env.BRANCH_NAME == 'development' ? 'H */12 * * *' : '')
}
}
查看本文更多内容
我能够找到一个例子来说明这一点,丢弃旧的构建,这也是我想要的。
Jenkinsfile
in jenkins-infra/jenkins.io:
properties(
[
[
$class: 'BuildDiscarderProperty',
strategy: [$class: 'LogRotator', numToKeepStr: '10']
],
pipelineTriggers([cron('H/30 * * * *')]),
]
)
对于参数化的周期性运行或调度触发器,可以使用如下命令:
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''' : ""
}
我遇到了上述解决方案的问题。
我不是一个詹金斯向导,所以不确定我是否使用旧格式/语法或其他东西,但以下是为我工作。
#!/usr/bin/env groovy
properties(
[
pipelineTriggers([
[
$class: 'TimerTrigger',
spec: 'H 7,19 * * *'
]
])
]
)
确定自:https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/triggers/TimerTrigger.java