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

多线程远程触发Jenkins作业时如何无需预取构建号追踪对应构建结果

多线程并发触发Jenkins作业追踪方案

解决并发场景下构建号匹配错误的核心逻辑是利用Jenkins触发接口返回的独有队列ID追踪构建,完全不需要提前预取下一个构建号:

1. 触发构建提取唯一队列ID

Jenkins在buildWithParameters接口触发成功后,会返回状态码201,响应头的Location字段会返回当前请求专属的队列地址,队列ID全局唯一,不会和其他并发请求冲突。
示例代码:

import requests
import time

# 替换为你的Jenkins认证信息
JENKINS_AUTH = ("用户名", "Jenkins API令牌")
JENKINS_TRIGGER_TOKEN = "myToken"

# 触发构建,参数建议通过POST body传递
trigger_url = f"{serverURL}/job/{jobName}/buildWithParameters?token={JENKINS_TRIGGER_TOKEN}"
# 若Jenkins开启CSRF防护,需先获取crumb加入请求头
crumb_resp = requests.get(f"{serverURL}/crumbIssuer/api/json", auth=JENKINS_AUTH)
crumb_info = crumb_resp.json()
req_headers = {crumb_info["crumbRequestField"]: crumb_info["crumb"]}

# 发送触发请求
trigger_resp = requests.post(
    trigger_url,
    auth=JENKINS_AUTH,
    headers=req_headers,
    data={"构建参数1": "参数值", "构建参数2": "参数值"}
)
# 获取当前请求专属队列地址
queue_url = trigger_resp.headers["Location"]

2. 轮询队列获取对应构建号

队列刚生成时还未分配构建号,轮询队列的API接口,等待executable字段生成后,即可拿到当前请求对应的唯一构建号:

build_num = None
build_detail_url = None
# 轮询队列最多30次,每次间隔1秒,可根据Jenkins调度速度调整
for _ in range(30):
    queue_resp = requests.get(f"{queue_url}/api/json", auth=JENKINS_AUTH)
    queue_data = queue_resp.json()
    # executable字段生成代表构建已被调度分配构建号
    if "executable" in queue_data:
        build_num = queue_data["executable"]["number"]
        build_detail_url = queue_data["executable"]["url"]
        break
    time.sleep(1)

if not build_num:
    raise TimeoutError("Jenkins队列调度超时,请检查作业是否被阻塞")

3. 追踪构建执行结果

拿到专属构建地址后即可查询构建状态、执行结果等信息,之前获取不到信息是因为请求的是作业总地址,而非单个构建的详情地址:

# 轮询等待构建完成
while True:
    build_resp = requests.get(f"{build_detail_url}/api/json", auth=JENKINS_AUTH)
    build_data = build_resp.json()
    # building字段为False代表构建已结束
    if not build_data["building"]:
        break
    time.sleep(2)

# 构建结果存储在result字段,常见返回值:SUCCESS/FAILURE/ABORTED
build_result = build_data["result"]
print(f"本次触发构建{build_num}执行结果:{build_result}")

以上方案全程不需要提前预取构建号,每个线程的请求都通过专属队列ID追踪,完全规避并发场景下的构建号匹配错误问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 20:27:00