2013-06-21 7 views
30

で特定の項目を参照するために木を使用して、私はジェンキンスRESTのAPI - JSON配列

http://localhost:8080/job/myjob/149/api/json 

URLを介して私のビルドに関する情報を取得するにはジェンキンスAPIを使用することができる午前私はチェンジノードを照会できるようにしたいですツリークエリ文字列パラメータを使用します。

http://localhost:8080/job/myjob/149/api/json?tree=duration 

インデックスセットされたノードをchangeSetのように照会するにはどうすればよいですか?どこにいても医者を見つけられないようです。

{ 
    "actions": [ 
     { 
      "causes": [ 
       { 
        "shortDescription": "Started by an SCM change" 
       } 
      ] 
     }, 
     {}, 
     {}, 
     {} 
    ], 
    "artifacts": [], 
    "building": false, 
    "description": null, 
    "duration": 80326, 
    "estimatedDuration": 68013, 
    "executor": null, 
    "fullDisplayName": "my project #149", 
    "id": "2013-06-14_14-31-06", 
    "keepLog": false, 
    "number": 149, 
    "result": "SUCCESS", 
    "timestamp": 1371234666000, 
    "url": "http://localhost:8080/job/my project/149/", 
    "builtOn": "", 
    "changeSet": { 
     "items": [ 
      { 
       "affectedPaths": [ 
        "SearchViewController.m", 
        "Sample.strings" 
       ], 
       "author": { 
        "absoluteUrl": "http://localhost:8080/user/my user", 
        "fullName": "My User" 
       }, 
       "commitId": "9032", 
       "timestamp": 1371234304048, 
       "date": "2013-06-14T18:25:04.048031Z", 
       "msg": "Author:my_author Description: changes Id: B-186199 Reviewer:reviewer_name", 
       "paths": [ 
        { 
         "editType": "edit", 
         "file": "/branches/project_name/iOS/_MainLine/project_name/SearchViewController.m" 
        }, 
             ], 
       "revision": 9032, 
       "user": "user_name" 
      } 
     ], 
     "kind": "svn", 
     "revisions": [ 
      { 
       "module": "repo_url", 
       "revision": 8953 
      }, 
      { 
       "module": "repo_url", 
       "revision": 9032 
      } 
     ] 
    }, 
    "culprits": [ 
     { 
      "absoluteUrl": "http://localhost:8080/user/username", 
      "fullName": "username" 
     } 
    ] 
} 

答えて

41

私は同意しますが、これはAPIのマニュアルに詳しくは説明されていませんが、ヒントがあります。

より新しい代替手段は、ツリークエリパラメータです。あなたが探している要素ではなく、探している要素だけを知る必要があります(これは、プラグインがAPI要素を提供することができるようなオープンなリストです)。この値は、サブプロパティが角かっこで囲まれたのプロパティ名のリストでなければなりません。

単純なリストの場合は、サブツリー全体を http://jenkins/job/myjob/../api/json?tree=artifacts[*]で取得するか、中括弧内の特定のプロパティを表示できます。

changeSetの場合は、http://jenkins/job/myjob/../api/json?tree=changeSet[*[*]]を使用してすべてを取得できます。特定のサブサブプロパティにネストされた角かっこを使用します。 http://jenkins/job/myjob/../api/json?tree=changeSet[items[revision]]

ツリーのドキュメントには、取得するプロパティが分かっている場合があります。

+0

おかげさまでデイブ...私はそれを取り巻くと最終的にそこに着いた... [*]は非常に便利で、私には全く新しいものですが。この文書を見つけるためにどの文書をロードしましたか?私はジェンキンスのダッシュボードから参照されている文書内で検索を続けていましたが、それを見つけるように見えませんでしたが、明らかに見落とされていた可能性があります。 – mckeejm

+0

ありがとうDave私はAPIのページをよく読んだと思ったが、私はこれを完全に逃した。本当に私がやっていることが本当に簡単になりました。 –

+3

'curl'は二重引用符で囲まれたバックスラッシュでエスケープされた角括弧を必要とすることに注意してください。例: '$ curl -s -k" https:// $ jenkins/pluginManager/api/json?pretty = 1&tree = plugins \ [ショートネーム、ロングネーム、バージョン\] "' – MarkHu

関連する問題