我使用下面的 curl 命令从上次成功的 jenkins 构建中获取修订 ID,从 json 输出我使用 jq 来 grep 修订 ID。
这是 curl 命令的 json 输出
"actions": [
{
"_class": "hudson.model.CauseAction",
"causes": [
{
"_class": "hudson.triggers.SCMTrigger$SCMTriggerCause",
"shortDescription": "Started by an SCM change"
}
]
},
{},
{
"_class": "jenkins.metrics.impl.TimeInQueueAction",
"blockedDurationMillis": 0,
"blockedTimeMillis": 0,
"buildableDurationMillis": 0,
"buildableTimeMillis": 0,
"buildingDurationMillis": 499235,
"executingTimeMillis": 499235,
"executorUtilization": 1,
"subTaskCount": 0,
"waitingDurationMillis": 6006,
"waitingTimeMillis": 6006
},
{},
{},
{
"_class": "hudson.plugins.git.util.BuildData",
"buildsByBranchName": {
"refs/remotes/origin/<branch name>": {
"_class": "hudson.plugins.git.util.Build",
"buildNumber": 6,
"buildResult": null,
"marked": {
"SHA1": "4bvdcaeacjd652d9abb85",
"branch": [
{
"SHA1": "4bvdcaeacjd652d9abb85",
"name": "refs/remotes/origin/<branch name>"
}
]
},
"revision": {
"SHA1": "4bvdcaeacjd652d9abb85",
"branch": [
{
"SHA1": "4bvdcaeacjd652d9abb85",
"name": "refs/remotes/origin/<branch name>"
}
]
}
}
},
"lastBuiltRevision": {
"SHA1": "4bvdcaeacjd652d9abb85",
"branch": [
{
"SHA1": "4bvdcaeacjd652d9abb85",
"name": "refs/remotes/origin/<branch name>"
}
]
},
"remoteUrls": [
"<remote git url>"
],
"scmName": ""
},
{},
{
"_class": "hudson.maven.reporters.MavenAggregatedArtifactRecord"
},
{},
{
"_class": "hudson.plugins.jira.JiraBuildAction"
},
{},
{
"_class": "org.jenkinsci.plugins.buildenvironment.actions.BuildEnvironmentBuildAction"
},
{
"_class": "hudson.plugins.disk_usage.BuildDiskUsageAction"
},
{},
{
"_class": "org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction"
}
]
这是我使用 curl 从 jenkins 获取详细信息并从 curl 输出(上面提到的原始 curl 输出)中获取修订 ID 的命令。
curl --user <user name>:<user token> -s "<jenkins url>/jenkins/job/<job name>/<build number>/api/json | jq -r '.actions[].lastBuiltRevision.branch.SHA1'
下面是我得到的输出
null
null
null
null
null
4bvdcaeacjd652d9abb85
null
null
null
null
null
null
null
null
null
curl 命令需要 5 秒才能从 jenkins 获取 json 输出,我如何摆脱这个空输出。
因为我想在其他步骤上使用修订版 ID 值。
给定输入,实现所需输出的一种方法是:
.actions[]
| select(.lastBuiltRevision)
| .lastBuiltRevision.branch[].SHA1
另一个是:
.actions[] | try .lastBuiltRevision.branch[] | .SHA1
还有很多其他的可能性。您选择哪种可能取决于您的稳健性要求。