【问题标题】:How can I get the final status of a completed Jenkins job via API?如何通过 API 获得已完成的 Jenkins 作业的最终状态?
【发布时间】:2014-03-04 21:20:54
【问题描述】:

我这样打电话:

http://jenkins.mysite.com/job/MYJOB/api/json?depth=2&tree=builds%5Bactions%5Bparameters%5Bname%2Cvalue%5D%5D%2Cnumber%2Cresult%5D

并得到如下结果:

{
    "builds": [{
        "actions": [{
            "parameters": [{
                "name": "JT_BUILD_ID",
                "value": "1274"
            }]
        }, {}, {}, {}, {}],
        "number": 3,
        "result": "SUCCESS"
    }, {
        "actions": [{
            "parameters": [{
                "name": "JT_BUILD_ID",
                "value": "1273"
            }]
        }, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}],
        "number": 2,
        "result": "SUCCESS"
    }, {
        "actions": [{
            "parameters": [{
                "name": "JT_BUILD_ID",
                "value": "0"
            }]
        }, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}],
        "number": 1,
        "result": "SUCCESS"
    }]
}

我正在传递 JT_BUILD_ID,因此我可以匹配此运行的 MYJOB。

当我找到匹配的 JT_BUILD_ID 时,我会查看结果,当我看到 SUCCESS 时,我认为我已经完成了。但该作业仍在运行中,以发布构建操作。

如何既匹配构建实例(使用参数 JT_BUILD_ID)又检测作业的最终状态?

【问题讨论】:

  • 您对 API 使用哪种脚本? javascript/蟒蛇?问题中的“你如何直接在 API 中传递 JT_BUILD_ID”?
  • 只是在 python 中进行 http 调用(没有库,只有原始代码),例如:/job/MYJOB/buildWithParameters?delay=0sec&token=XBUILD&JT_BUILD_ID=1276
  • 在你的情况下,为什么不使用 if 语句来检查?假设 json_result 在字符串之上, build_no 就是你想要的。然后filter(lambda x: x["actions"][0]["parameters"][0]["name"]=='JT_BUILD_ID' and x["number"]==build_no, json_result["builds"])
  • 我认为你没有理解我的问题。这不是解析问题...我看到结果“成功”但构建尚未完成,它仍有构建后的命令要运行。

标签: api jenkins


【解决方案1】:

builds下还有一个键building,如果post-build还在工作,状态将保持为true。作业完全完成后变为false

因此你可以为building == false添加额外的检查,最终的url如下所示

https://ci.jenkins-ci.org/view/Libraries/job/lib-jira-api/api/json/?pretty=true&depth=2&tree=builds[actions[parameters[name,value]],number,result,building]

如果最新构建正在进行(在构建后阶段),则结果可能如下所示

{
  "builds": [{
    "actions": [{
        "parameters": [{
            "name": "JT_BUILD_ID",
            "value": "1274"
        }]
    }, {}, {}, {}, {}],
    "building" : true,
    "number": 3,
    "result": "SUCCESS"
  }, {
    "actions": [{
        "parameters": [{
            "name": "JT_BUILD_ID",
            "value": "0"
        }]
    }, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}],
    "building" : false,
    "number": 1,
    "result": "SUCCESS"
  }]
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多