我正在使用Pipeline插件运行Jenkins 2。我已经建立了一个多分支管道项目,其中每个分支(主分支,开发分支等)的根目录都有一个Jenkinsfile。设置起来很简单。但是,即使代码未更改,如何让每个分支定期运行(而不是分支索引),我还是一头雾水。我需要在Jenkinsfile中添加什么以启用定期构建?
Answers:
如果您使用声明式样式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'
}
}
}
}
master
分支上触发?给出一些背景信息:当队友创建一个新的功能分支并提交在那里时,Jenkins文件仍应触发(通过轮询或推送),但是我不想要的是cron在这些功能分支上触发触发器。
我能够找到一个示例,说明这是一个废弃的旧版本,这也是我想要的。
Jenkinsfile
在jenkins-infra / jenkins.io中:
properties(
[
[
$class: 'BuildDiscarderProperty',
strategy: [$class: 'LogRotator', numToKeepStr: '10']
],
pipelineTriggers([cron('H/30 * * * *')]),
]
)
buildDiscarder
符号简化语法,如流水线语法所示。
pipelineTriggers([[$class: "TimerTrigger", spec: "H 1 * * *"]])