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

如何通过Jenkins REST API获取刚触发的构建编号?

获取Jenkins远程触发的构建编号方案

下面是几种可靠的方法,避免依赖lastBuild带来的冲突问题:

方法1:利用响应头Location获取构建编号

当你发送POST请求触发构建时,Jenkins成功响应的Location头会直接返回新构建的完整URL,其中包含构建编号。如果你的Jenkins启用了CSRF保护,需要先获取crumb再请求,步骤如下:

  1. 获取CSRF crumb:
    CRUMB=$(curl -u "用户名:密码/API令牌" "http://{IP}:{PORT}/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,':',//crumb)")
    
  2. 触发构建并捕获响应头:
    curl -u "用户名:密码/API令牌" -H "$CRUMB" -v -X POST "http://{IP}:{PORT}/job/subjob/buildWithParameters?token=你的令牌" 2>&1 | grep -i "Location:"
    
    响应头里的Location值类似http://{IP}:{PORT}/job/subjob/123/,末尾的123就是你触发的构建编号。

方法2:通过自定义唯一参数标记构建

触发构建时传入一个唯一标识参数(比如UUID),之后通过API查询匹配该参数的构建:

  1. 生成唯一标识并触发构建:
    # Linux/macOS环境生成UUID
    UNIQUE_ID=$(uuidgen)
    curl -u "用户名:密码/API令牌" -X POST "http://{IP}:{PORT}/job/subjob/buildWithParameters?token=你的令牌&BUILD_MARKER=$UNIQUE_ID"
    
  2. 查询匹配参数的构建编号:
    curl -u "用户名:密码/API令牌" "http://{IP}:{PORT}/job/subjob/api/json?tree=builds[number,actions[parameters[name,value]]]" | jq --arg id "$UNIQUE_ID" '.builds[] | select(.actions[]?.parameters[]? | .name == "BUILD_MARKER" and .value == $id) | .number'
    
    该方法需要安装jq解析JSON响应,返回的数字即为目标构建编号。

方法3:通过构建队列追踪构建编号

触发的构建会先进入Jenkins队列,你可以通过队列项查询关联的构建编号:

  1. 触发构建并捕获队列项URL:
    QUEUE_URL=$(curl -u "用户名:密码/API令牌" -v -X POST "http://{IP}:{PORT}/job/subjob/buildWithParameters?token=你的令牌" 2>&1 | grep -i "Location:" | awk '{print $2}' | tr -d '\r\n')
    
    这里的QUEUE_URL格式类似http://{IP}:{PORT}/queue/item/456/
  2. 轮询队列状态,直到获取构建编号:
    while true; do
        BUILD_URL=$(curl -u "用户名:密码/API令牌" "$QUEUE_URL/api/json" | jq -r '.executable.url')
        if [ "$BUILD_URL" != "null" ]; then
            BUILD_NUMBER=$(echo "$BUILD_URL" | awk -F'/' '{print $(NF-1)}')
            echo "你的构建编号是: $BUILD_NUMBER"
            break
        fi
        sleep 2
    done
    
    该方法适合构建需要排队的场景,轮询直到队列项关联到实际构建实例。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 19:18:23