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

使用jq命令提取Jenkins JSON输出时如何去除null结果

解决Jenkins构建SHA1提取时的null输出问题

方法一:筛选存在lastBuiltRevision的Action项

修改你的jq命令,添加筛选条件,只处理包含目标字段的action条目:

curl --user <user name>:<user token> -s "<jenkins url>/jenkins/job/<job name>/<build number>/api/json" | jq -r '.actions[] | select(.lastBuiltRevision != null) | .lastBuiltRevision.SHA1'

方法二:按Action类型精准筛选

如果想避免误匹配,可以直接定位到存储Git构建数据的Action类型(hudson.plugins.git.util.BuildData):

curl --user <user name>:<user token> -s "<jenkins url>/jenkins/job/<job name>/<build number>/api/json" | jq -r '.actions[] | select(._class == "hudson.plugins.git.util.BuildData") | .lastBuiltRevision.SHA1'

优化curl请求耗时

针对你提到的curl请求耗时5秒的问题,可以通过tree参数只请求需要的字段,减少数据传输量:

curl --user <user name>:<user token> -s "<jenkins url>/jenkins/job/<job name>/<build number>/api/json?tree=actions[_class,lastBuiltRevision[SHA1]]"

配合这个精简后的请求,上述jq命令依然可以正常提取SHA1,同时能有效缩短请求时间。

原命令输出大量null的原因

原命令遍历了actions数组的所有条目,但大部分Action(比如CauseAction、TimeInQueueAction)并不包含lastBuiltRevision字段,jq遇到不存在的字段时会默认输出null。通过select筛选后,仅处理符合条件的Action项,就能只得到有效SHA1值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 13:03:37