如何为Jenkins Pipeline设置仅main分支生效的定时触发器?
实现Jenkins定时触发器仅在main分支运行的方案
可行,你可以通过以下两种常用方式实现需求:
方案一:动态配置定时触发器(推荐)
利用Jenkins内置的BRANCH_NAME环境变量判断当前分支,仅在main分支启用定时任务,其他分支和PR自动跳过定时配置:
pipeline { triggers { // 仅当分支为main时启用每5小时一次的定时触发,其他分支不设置定时规则 cron(env.BRANCH_NAME == 'main' ? 'H */5 * * *' : '') } stages { stage('Foo') { steps { // 这里填写你的阶段执行逻辑 echo '执行Foo阶段任务' } } } }
注:PR构建时BRANCH_NAME通常显示为PR-XXX格式,不会匹配main分支,因此不会触发定时任务。
方案二:条件终止非main分支的定时执行(备选)
如果不想修改触发器配置,也可以保留全局定时规则,但在流水线启动时判断分支,非main分支直接终止执行:
pipeline { triggers { cron('H */5 * * *') } stages { stage('分支校验') { steps { script { // 非main分支或PR分支直接终止流水线 if (env.BRANCH_NAME != 'main' || env.BRANCH_NAME.startsWith('PR-')) { error '仅main分支执行定时任务,当前分支终止运行' } } } } stage('Foo') { steps { // 这里填写你的阶段执行逻辑 echo '执行Foo阶段任务' } } } }
这种方案的缺点是定时触发器会触发所有分支的任务,但非main分支会直接终止,相比方案一更浪费资源,因此优先推荐方案一。
内容的提问来源于stack exchange,提问作者Pauline
相关产品推荐
相关产品推荐

