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

如何从Jenkins WorkflowRun类型JSON中提取指定分支的name与SHA1值

Jenkins JSON分支信息提取方案

我们可以通过常用的JSON处理工具快速实现指定分支的name与SHA1值提取,具体方法如下:

1. 命令行工具jq实现(最简便)

jq是Linux/macOS环境下通用的轻量级JSON处理工具,直接用以下命令即可查询:

精确匹配分支名

将待处理的JSON内容保存为jenkins.json,替换命令中目标分支名为你要查询的分支全名即可:

jq -r --arg target "目标分支名" '.actions[] | .lastBuiltRevision.branch[] | select(.name == $target) | "\(.name):\(.SHA1)"' jenkins.json

参数说明:

  • -r:输出原始字符串,避免结果被双引号包裹
  • --arg target 目标分支名:传入要匹配的分支名称,规避特殊字符的语法冲突
  • 筛选逻辑:遍历actions数组下所有分支条目,匹配name值后按要求格式拼接输出

示例运行效果

查询refs/remotes/abcd/feature/demo_abcd分支时,运行命令:

jq -r --arg target "refs/remotes/abcd/feature/demo_abcd" '.actions[] | .lastBuiltRevision.branch[] | select(.name == $target) | "\(.name):\(.SHA1)"' jenkins.json

输出结果:

refs/remotes/abcd/feature/demo_abcd:433d2ec97cdd1ca01c352aa0b8510e0a8f93fa0c

模糊匹配拓展(可选)

如果需要匹配所有包含指定关键词的分支,修改select条件即可,例如下方命令会输出所有名称带demo的分支:

jq -r --arg target "demo" '.actions[] | .lastBuiltRevision.branch[] | select(.name | contains($target)) | "\(.name):\(.SHA1)"' jenkins.json

2. Python代码实现(适合集成到业务逻辑中)

如果需要在代码中完成提取逻辑,可以用Python原生的json模块实现:

import json

# 加载本地JSON文件
with open("jenkins.json", "r", encoding="utf-8") as f:
    jenkins_data = json.load(f)

# 替换为你要匹配的分支名
target_branch = "refs/remotes/abcd/feature/demo_abcd"

for action in jenkins_data["actions"]:
    # 跳过没有lastBuiltRevision字段的异常action节点
    if "lastBuiltRevision" not in action:
        continue
    for branch in action["lastBuiltRevision"]["branch"]:
        if branch["name"] == target_branch:
            print(f"{branch['name']}:{branch['SHA1']}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 09:27:07