Bitbucket能否按指定文件触发Webhook?场景触发问题求解决方案
解决Bitbucket Webhook无变更文件列表的触发控制问题
方案1:用Bitbucket自带的路径匹配规则(最省心)
Bitbucket本身就支持按文件路径过滤Webhook触发,根本不用纠结负载里有没有文件列表:
- 打开仓库的Webhook设置,找到Webhook B
- 触发类型选「Repository push」,然后添加一条路径包含规则:
sampleB.txt - 给Webhook A设置反向规则:要么排除
sampleB.txt,要么只配置它需要监听的文件路径 - 这样Bitbucket在推送时会自动校验变更文件,只给符合规则的Webhook发送请求
方案2:加个中间服务做校验转发
如果路径规则满足不了复杂需求,可以搭建一个简单的中间服务:
- 把两个Webhook的目标地址都改成这个中间服务的地址
- 服务收到Bitbucket的请求后,调用Bitbucket的提交API拉取该提交的变更文件列表
- 检查列表里是否包含
sampleB.txt:有就把请求转发给Webhook B,没有则转发给Webhook A - 注意要在服务里做签名验证,确保请求来自Bitbucket
方案3:让流水线自己判断要不要执行
如果外部流水线支持自定义启动逻辑,也可以这么处理:
- 保持两个Webhook正常触发
- 流水线启动第一步,用
git diff --name-only HEAD^ HEAD命令拉取本次提交的变更文件列表 - Webhook A对应的流水线:如果检测到
sampleB.txt变更,直接终止流程;Webhook B的流水线:仅当检测到sampleB.txt变更时才继续执行后续步骤
内容的提问来源于stack exchange,提问作者user3454
相关产品推荐
相关产品推荐

