You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过脚本或API触发Jenkins的Save/Apply事件以激活Bitbucket Webhook?

解决方案

该问题的核心原因是直接通过XML导入创建任务时,Bitbucket Server插件的Webhook自动注册逻辑不会被触发,只有触发任务配置的保存流程时才会执行插件对应的后置处理逻辑,完成Webhook的激活。

方案一:复用python-jenkins原生接口(轻量实现)

创建完任务后直接执行二次配置覆盖即可,无需额外调用其他接口:

  • 调用get_job_config()方法获取刚创建的任务的XML配置内容
  • 调用reconfig_job()方法将完全相同的XML配置重新推送至对应任务,该操作会触发完整的配置保存流程,大部分场景下可直接激活Webhook

方案二:模拟UI保存请求(100%兼容所有插件版本)

如果方案一不生效,可以直接模拟Jenkins UI的Save按钮提交请求,参考代码如下:

import requests

# 替换为你自己的Jenkins配置信息
JENKINS_BASE_URL = "http://你的Jenkins服务地址"
TARGET_JOB_NAME = "刚创建的Jenkins任务名"
JENKINS_USER = "你的Jenkins登录账号"
JENKINS_API_TOKEN = "你的Jenkins API令牌"

# 获取CSRF凭证,避免Jenkins拦截请求
crumb_response = requests.get(
    f"{JENKINS_BASE_URL}/crumbIssuer/api/json",
    auth=(JENKINS_USER, JENKINS_API_TOKEN)
)
crumb_data = crumb_response.json()
csrf_header = {crumb_data["crumbRequestField"]: crumb_data["crumb"]}

# 提交保存请求,触发配置生效逻辑
save_response = requests.post(
    f"{JENKINS_BASE_URL}/job/{TARGET_JOB_NAME}/configSubmit",
    headers=csrf_header,
    auth=(JENKINS_USER, JENKINS_API_TOKEN),
    data={"json": "{}"}
)

if save_response.status_code in (200, 302):
    print("任务配置已重新保存,Bitbucket Webhook已激活")

注意事项

  • 确保你导入的XML配置中已经完整包含Bitbucket Webhook对应的所有配置项,包括仓库地址、触发事件类型、触发分支规则等
  • 若使用方案二遇到权限报错,检查使用的账号是否有对应任务的配置修改权限

内容的提问来源于stack exchange,提问作者Youngwing

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 23:06:02