从Jenkins REST查询中检索参数

时间:2018-06-13 12:45:54

标签: jenkins


以下REST查询将返回上次成功构建作业的参数: https://localhost/job/test1/lastSuccessfulBuild/api/json
我有兴趣检索这个构建的一个参数,即BUILD_VERSION:

{

    "_class": "org.jenkinsci.plugins.workflow.job.WorkflowRun",
    "actions": [
        {
            "_class": "hudson.model.CauseAction",
            "causes": [
                {
                    "_class": "hudson.model.Cause$UpstreamCause",
                    "shortDescription": "Started by upstream project \"continuous-testing-pipeline-for-nightly\" build number 114",
                    "upstreamBuild": 114,
                    "upstreamProject": "continuous-testing-pipeline-for-nightly",
                    "upstreamUrl": "job/continuous-testing-pipeline-for-nightly/"
                }
            ]
        },
        { },
        {
            "_class": "hudson.model.ParametersAction",
            "parameters": [

                {
                    "_class": "hudson.model.StringParameterValue",
                    "name": "BUILD_VERSION",
                    "value": "1.1.15"

有没有办法直接使用REST Api检索BUILD_VERSION(1.1.15),还是必须手动解析json字符串? 感谢

3 个答案:

答案 0 :(得分:3)

简短回答:不。

以编程方式访问通过JSON API公开的任何属性的最简单方法是从Jenkins支持的JSON API之一获取JSON(在您的情况下:https://localhost/job/<jobname>/lastSuccessfulBuild/api/json

  1. 将生成的JSON复制到http://json2csharp.com
  2. 生成相应的C#代码。不要忘记为顶级课程创建一个有意义的名称。
  3. 使用RestSharp以编程方式从C#调用RestAPI。
  4. 将json反序列化为您在上面2中定义的C#类。
  5. Wammo,您可以访问整个对象树及其所有值。

    我使用这种方法编写了一个名为“BuildDashboard”的MVC5 ASP.NET站点,以提供开发团队可能想要的所有信息,并回答他们所有的问题。

答案 1 :(得分:2)

是的,你可以获得价值,但它只适用于XML API :(
JSON API将使用Tree返回简化的json对象:)

所以Jenkins为您提供api(XML,JSON,PYTHON),您可以从中读取任何项目的Jenkins相关数据。详细文档在https://localhost/job/test1/lastSuccessfulBuild/api

中提供

因为它清楚地表明了

  1. XML API - 使用XPath控制所需的片段。例如,.. / api / xml?xpath = / / [0] < / p>

  2. JSON API - 使用树

  3. Python API - 使用st.literal_eval(urllib.urlopen(“...”)。read())

  4. 以上所有内容均可用于从API中获取的整个杂乱数据中获取特定片段/片段。

    在您的情况下,我们将使用树,原因很明显:)

    语法: tree=keyname[field1,field2,subkeyname[subfield1]]

    为了检索BUILD_VERSION,即值

    //jenkins/job/myjob/../api/json?tree=lastSuccessfulBuild[parameters[value]]
    

    以上应该可以满足您的需求,但需要一些跟踪和错误:)

    您还可以在此处参考,以便更好地了解如何在JSON API中使用Tree https://www.cloudbees.com/blog/taming-jenkins-json-api-depth-and-tree

    希望有所帮助:)

答案 2 :(得分:0)