如何配置Jenkins排除草稿PR触发构建任务
Jenkins仅对非草稿状态PR执行构建的实现方案
目前该需求有成熟的落地方式,找不到配置入口基本是插件版本或者配置路径不对,具体方案如下:
方案1:插件原生配置(推荐,无脚本维护成本)
github-branch-source-plugin的草稿PR过滤能力已经正式发布,不需要自行打补丁或者使用非官方版本:
- 前置要求:将
GitHub Branch Source Plugin升级到2.9.0及以上版本,低于该版本没有内置该功能 - 配置步骤:
- 打开对应多分支流水线/GitHub组织任务的配置页面,找到源码管理下的GitHub源配置区块
- 找到「Behaviours」(行为策略)配置区,点击添加按钮,在下拉列表中选择
Skip draft pull requests(跳过草稿拉取请求) - 保存配置后立即生效:后续扫描到的草稿PR不会触发构建,当草稿PR标记为就绪状态后,才会自动触发对应构建任务。
配置提示:如果是GitHub组织级别的流水线任务,直接在组织任务层级配置该规则即可,组织下所有关联仓库会自动继承配置,不需要逐个仓库单独设置。
方案2:脚本兼容方案(无法升级插件时使用)
如果受环境限制不能升级插件,可以直接在Jenkinsfile中加状态判断,识别到草稿PR时主动终止构建:
pipeline { agent any stages { stage('草稿PR前置校验') { when { expression { // 普通分支构建直接放行,PR构建校验草稿状态 def prCause = currentBuild.rawBuild.getCause(org.jenkinsci.plugins.github_branch_source.PullRequestSCMCause) return !env.CHANGE_ID || prCause?.pullRequest?.draft != true } } steps { echo "非草稿PR/普通分支构建,开始执行正常流水线流程" } } // 后续正常构建的业务阶段在此处添加 } }
注意:该脚本用到的内部API需要在Jenkins脚本安全配置中加入白名单,否则构建时会报权限拒绝错误。如果是脚本式流水线,直接在流水线最外层加判断逻辑,识别到草稿PR直接return退出即可。
找不到配置入口的常见排查方向
- 确认任务类型:只有多分支流水线、GitHub组织类型的任务会加载github-branch-source插件的行为配置,普通自由风格任务、单分支流水线不会显示该选项
- 升级插件后重启Jenkins服务,清理浏览器缓存后再进入配置页查看,避免旧版本静态资源缓存导致选项不显示
- 如果安装了第三方GitHub集成类插件,暂时禁用后再查找选项,部分插件会覆写原生的行为策略列表
内容的提问来源于stack exchange,提问作者jurvis
相关产品推荐
相关产品推荐

