You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 12:01:51