如何在Bitbucket创建PR时触发Jenkins运行源分支流水线?
实现Bitbucket PR触发Jenkins并运行对应源分支Jenkinsfile的方案
核心依赖插件
先装两个关键Jenkins插件:
- Bitbucket Branch Source Plugin:实现Jenkins与Bitbucket的深度集成,自动识别分支、PR并触发构建
- Pipeline Plugin:基础流水线支持,确保能解析分支内的Jenkinsfile
步骤1:配置Bitbucket仓库的Webhook
在Bitbucket仓库设置中找到「Webhooks」,新建一个:
- 填写Jenkins的Hook地址:
http://<你的Jenkins域名或IP>/bitbucket-hook/ - 触发事件勾选「Pull request created」「Pull request updated」(按需添加其他事件,至少保留创建和更新)
- 保存后测试Webhook,确保能正常触发Jenkins
步骤2:创建Jenkins多分支流水线项目
新建Multibranch Pipeline项目,这是实现多PR独立构建的核心:
- 配置分支源:
- 选择「Bitbucket」作为分支源,填入仓库URL
- 添加Bitbucket访问凭证(推荐用App Password,仅赋予仓库读取权限即可)
- 过滤feature分支:
- 在「Branch Sources」的「Filter by name」中填入正则表达式
feature_.*,让Jenkins只处理以feature_开头的分支
- 在「Branch Sources」的「Filter by name」中填入正则表达式
- PR触发规则:
- 点开分支源的「Advanced」设置,勾选「Build pull requests from origin」(内部PR场景),构建策略选择「Build the source branch」(直接构建PR源分支,无需合并目标分支)
- 开启并发构建:
- 在项目配置的「General」标签下,勾选「Concurrent builds」,这样即使同时存在100个PR,Jenkins也能并行处理每个PR对应的分支构建
步骤3:确保分支内存在Jenkinsfile
每个feature_开头的分支根目录都需要放置Jenkinsfile,示例内容如下:
pipeline { agent any stages { stage('Build') { steps { sh 'mvn clean package' // 替换为你的实际构建命令 } } stage('Test') { steps { sh 'mvn test' } } } }
额外优化点
- 若仅需触发向master分支的PR构建,可在Jenkinsfile中添加
when条件:when { changeRequest target: 'master' } - 每个PR的构建会在Jenkins中显示为
PR-XXX(XXX为PR编号),方便快速定位对应PR的构建记录 - 插件配置正确时,Bitbucket的PR页面会自动同步Jenkins的构建状态
内容的提问来源于stack exchange,提问作者Thomas Raj
相关产品推荐
相关产品推荐

