如何用Bitbucket Webhooks触发无关联仓库的Jenkins流水线任务?
解决方案:无代码关联的Jenkins脚本式流水线对接Bitbucket PR Webhook
核心思路
Bitbucket官方集成插件通常要求Jenkins任务关联代码仓库,这里用Generic Webhook Trigger插件绕开这个限制,通过接收Bitbucket的Webhook请求直接触发无代码关联的脚本式流水线。
步骤1:安装必要插件
在Jenkins插件管理中安装Generic Webhook Trigger插件,该插件支持接收任意HTTP请求并触发任务,无需任务绑定代码仓库。
步骤2:配置Jenkins流水线任务的触发规则
- 打开你的脚本式流水线任务,进入配置页面。
- 找到构建触发器区域,勾选
Generic Webhook Trigger。 - 设置Token:输入一个唯一标识(如
bitbucket-xyz-pr-trigger),后续Bitbucket Webhook需要使用此token。 - (可选)提取Webhook参数(如需在流水线中使用PR信息):
- 点击添加变量,设置:
- Key:
pr_id,Value:$.pullrequest.id(通过JSONPath匹配Bitbucket Webhook payload中的PR编号) - Key:
repo_slug,Value:$.repository.slug(匹配仓库名称)
- Key:
- 点击添加变量,设置:
- (可选)添加触发条件:点击添加触发条件,选择
Variable,设置repo_slug等于xyz,确保只有指定仓库的PR事件才触发任务。
步骤3:配置Bitbucket仓库的Webhook
- 打开Bitbucket中
xyz仓库的设置→Webhooks→创建Webhook。 - 填写以下信息:
- 名称:自定义(如
Jenkins PR Trigger) - URL:
http://<你的Jenkins域名或IP>/generic-webhook-trigger/invoke?token=bitbucket-xyz-pr-trigger(替换为实际Jenkins地址和步骤2中设置的token) - 触发事件:勾选Pull Request下的创建(如需监听PR更新也可勾选)
- 名称:自定义(如
- 保存Webhook。
步骤4:脚本式流水线适配(可选)
如果需要在流水线中使用Webhook传递的PR参数,修改你的流水线脚本示例如下:
pipeline { agent any stages { stage('Stage 1'){ echo "hello, world!" // 打印Webhook传递的参数 echo "触发的PR编号: ${env.pr_id}" echo "触发的仓库: ${env.repo_slug}" } } }
内容的提问来源于stack exchange,提问作者KR29
相关产品推荐
相关产品推荐

