如何在Scripted Pipeline中阻止Jenkins任务响应GitHub特定分支推送,仅按Cron运行?
在Scripted Pipeline中禁用GitHub分支推送触发,仅保留Cron定时触发
要实现仅让Jenkins任务通过Cron定时触发,完全忽略GitHub分支的推送事件,你可以通过以下步骤和代码实现:
核心配置要点
- 仅保留Cron触发器,移除所有SCM相关的触发配置
- 禁用SCM轮询及Webhook响应
- 确保任务配置中关闭GitHub钩子触发(若手动配置任务)
Scripted Pipeline 代码示例
node { // 仅配置Cron定时触发,根据需求调整表达式(示例为每天凌晨0点触发) triggers { cron('H 0 * * *') } options { skipDefaultCheckout() // 跳过默认代码拉取,改为手动控制 disableConcurrentBuilds() // 可选:防止并发构建冲突 } stage('拉取代码') { checkout scm: git( url: 'https://github.com/your-username/your-repo.git', branch: 'main', // 指定你的目标分支 poll: false // 关键:禁用SCM轮询,同时阻止Webhook触发 ) } stage('构建') { // 替换为你的实际构建命令 sh 'mvn clean package' } // 可添加后续测试、部署等阶段 }
关键细节说明
triggers块:只保留cron触发器,不要添加scm触发器,确保只有定时任务能触发构建。poll: false:在git配置中设置该参数后,Jenkins会停止轮询仓库变更,同时也会忽略GitHub推送的Webhook事件,从根源上阻止代码推送触发构建。- 任务配置检查:如果是手动创建的Jenkins任务,进入任务配置页面,取消勾选「GitHub hook trigger for GITScm polling」选项,确保没有残留的触发配置。
验证方法
推送代码到目标分支后,观察Jenkins任务是否不会自动启动;同时等待Cron定时时间到达,确认任务能正常触发运行。
内容的提问来源于stack exchange,提问作者MADHU J
相关产品推荐
相关产品推荐

