Jenkins の実行中のジョブ情報などを JSON 形式で取得する API

Jenkins の各種情報は WebAPI で拾えることを知った。

任意のジョブやビュー、ノードコンピュータのページに遷移し、その URL の末尾に /api を付与すると、参照できる API が確認できる。

例えば、あるジョブから参照できる API を調べるには、以下のようにする。

http://localhost:8080/job/my-job/
↓ 「/api」を付ける
http://localhost:8080/job/my-job/api

すると、この情報を XML か JSON か Python で取得するためのリンクが拾える。以下のような URL になる。

http://localhost:8080/job/my-job/api/json?pretty=true

pretty=true というオプションを渡すと、整形された JSON ファイルが取得できる。省略すれば圧縮されたモノが拾える。

さらに、この中からフィールドを指定して情報を絞り込んで取得できる。例えばジョブの API のうち、過去のビルド情報部分のみ拾いたければ、以下のように書く。

http://localhost:8080/job/my-job/api/json?pretty=true&tree=builds[number,url]

tree= オプションの後にフィールド名をカンマ , で連ねて書き、ネストされたフィールドは [] の中に書いていく。number,url と2つのフィールドを指定しているが、url だけ指定したりしても良い。

↓ トップレベルプロパティの description と builds のみ抽出し、builds 配下は url のみ取得する
http://localhost:8080/job/my-job/api/json?pretty=true&tree=description,builds[url]

Jenkins で実行中のジョブ情報を取得したければ、ノード (コンピュータ) 配下から情報を取得するのが良いだろう。

http://localhost:8080/computer/api/json?pretty=true&tree=computer[displayName,executors[progress,idle,currentExecutable[fullDisplayName,url]]]

こんな感じ。この URL を定期的に叩いてステータスを確認すれば、実行中のジョブの情報を API で取得できる。