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 で取得できる。