如何从Jenkins JSON远程访问API

时间:2017-01-25 22:31:25

标签: jenkins jenkins-api

在我的jenkins工作的浏览器中,我运行以下查询。

  

lastStableBuild / API / JSON漂亮=真安培;树=行动[buildsByBranchName [* [*]]]

以上查询的结果

{
  "_class" : "hudson.model.FreeStyleBuild",
  "actions" : [
    {
      "_class" : "hudson.model.CauseAction"
    },
    {

    },
    {
      "_class" : "jenkins.metrics.impl.TimeInQueueAction"
    },
    {

    },
    {
      "_class" : "hudson.plugins.git.util.BuildData",
      "buildsByBranchName" : {
        "my-branch-name" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 587,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "***",
            "branch" : [
              {

              }
            ]
          },
          "revision" : {
            "SHA1" : "***",
            "branch" : [
              {

              }
            ]
          }
        },
        "my-other-branch-name" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1373,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "***",
            "branch" : [
              {

              }
            ]
          },
          "revision" : {
            "SHA1" : "***",
            "branch" : [
              {

              }
            ]
          }
        },

我希望能够将其缩小到只有您可以使用的构建号

/lastSuccessBuild/buildNumber

使用api,但我会解决分支名称键中的所有内容,这样我就不必遍历所有分支并比较名称。我假设我可以在指定"*"的地方缩小范围,但无法确定要使用的正确语法。

2 个答案:

答案 0 :(得分:1)

我从这里得到了这些信息。

tree=actions[lastBuiltRevision[*,branch[*]]]

无论哪种方式,如果你想要从树的buildsByBranchName部分内部获取分支信息,你将不得不像我上面那样查询它。

答案 1 :(得分:0)

如果您不介意在xml中回复答案,xpath效果很好。

对于网址:

/lastStableBuild/api/xml?xpath=//buildsByBranchName&wrapper=meep

创建一个类似于:

的xml
<meep>
    <buildsByBranchName>
        ... 
    </buildsByBranchName>
</meep>

并且将使用buildsByBranchName 填充(注意:如果有多个git遥控器可能有多个,因此需要一个包装器)用于指定的上一次成功构建的作业在网址中。你可以用任何东西替换“meep”这个词,它将成为新创建的xml对象的包装器对象。