我正在使用Pipeline插件运行Jenkins 2。我已经设置了一个多分支管道项目,其中每个分支(主,开发等)在根目录中都有一个Jenkins文件。设置这个很简单。但是,即使代码没有改变,我也不知道如何定期运行每个分支(而不是分支索引)。我需要在Jenkins文件中添加什么才能启用定期构建?
答案 0 :(得分:37)
如果您使用声明式样式管道并且只想在特定分支上触发构建,则可以执行以下操作:
String cron_string = BRANCH_NAME == "master" ? "@hourly" : ""
pipeline {
agent none
triggers { cron(cron_string) }
stages {
// do something
}
}
上找到
答案 1 :(得分:29)
如果您使用的是声明式样Jenkins文件,那么您可以使用triggers指令。
declare @run varchar(1)
set @run = '" + @[User::run] + "'
if @run = 'Y'
begin
EXEC sp_procedure()
end
答案 2 :(得分:23)
我能够找到一个例子,说明这是一个丢弃的旧版本,这也是我想要的。
Jenkinsfile
in jenkins-infra/jenkins.io:
properties(
[
[
$class: 'BuildDiscarderProperty',
strategy: [$class: 'LogRotator', numToKeepStr: '10']
],
pipelineTriggers([cron('H/30 * * * *')]),
]
)
答案 3 :(得分:3)
答案 4 :(得分:0)
对于参数化的定期运行或计划的触发器,可以使用以下方式。
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''' : ""
}
答案 5 :(得分:0)
我遇到了上述解决方案的问题。
我不是 Jenkins 向导,所以不确定我是否使用旧格式/语法或其他东西,但以下对我有用。
#!/usr/bin/env groovy
properties(
[
pipelineTriggers([
[
$class: 'TimerTrigger',
spec: 'H 7,19 * * *'
]
])
]
)