Remote API を介して Jenkins サーバーに関するほぼすべてを確認できますが、現在実行中のジョブのリストは確認できません。
これ、
http://my-jenkins/computer/api/json
また
http://my-jenkins/computer/(master)/api/json
最も論理的な選択肢のように思えますが、実際に実行されているジョブについては (ジョブの数以外は) 何も言いません。
Remote API を介して Jenkins サーバーに関するほぼすべてを確認できますが、現在実行中のジョブのリストは確認できません。
これ、
http://my-jenkins/computer/api/json
また
http://my-jenkins/computer/(master)/api/json
最も論理的な選択肢のように思えますが、実際に実行されているジョブについては (ジョブの数以外は) 何も言いません。
Jenkins では、特にジョブが「ビルド ジョブ」と呼ばれることが多いため、ジョブとビルドが混同されることがよくあります。
詳細については、 https://wiki.jenkins-ci.org/display/JENKINS/Building+a+software+projectを参照してください。
現在ビルド中のジョブ(つまり、実行中の build が 1 つ以上ある) が必要な場合、最も速い方法は、次のように、REST API を XPath と共に使用して、 で終わる色をフィルター処理することです。_anime
http://jenkins.example.com/api/xml?tree=jobs[name,url,color]&xpath=/hudson/job[ends-with(color/text(),%22_anime%22)]&wrapper=jobs
次のようなものが得られます:
<jobs>
<job>
<name>PRE_DB</name>
<url>http://jenkins.example.com/job/my_first_job/</url>
<color>blue_anime</color>
</job>
<job>
<name>SDD_Seller_Dashboard</name>
<url>http://jenkins.example.com/job/my_second_job/</url>
<color>blue_anime</color>
</job>
</jobs>
Jenkins はこのcolor
フィールドを使用して、ジョブのステータスを示します。_anime
接尾辞は、ジョブが現在構築中であることを示します。
残念ながら、これでは実際に実行中のビルドに関する情報は得られません。ジョブの複数のインスタンスが同時に実行されている可能性があり、実行中のビルドが常に最後に開始されたビルドであるとは限りません。
実行中のすべてのビルドを一覧表示する場合は、次のように REST API を使用してすばやく回答を取得することもできます。
http://jenkins.example.com/computer/api/xml?tree=computer[executors[currentExecutable[url]],oneOffExecutors[currentExecutable[url]]]&xpath=//url&wrapper=builds
次のようなものが表示されます。
<builds>
<url>http://jenkins.example.com/job/my_first_job/1412/</url>
<url>http://jenkins.example.com/job/my_first_job/1414/</url>
<url>http://jenkins.example.com/job/my_second_job/13126/</url>
</builds>
ここには、現在実行中のすべてのビルドのリストが表示されます。URL を解析して、ジョブ名をビルド番号から分離する必要があります。my_first_job
現在実行中の 2 つのビルドがあることに注意してください。
GET
ちょっとしたハックですが、で実行するときにジョブオブジェクトのカラーキーを確認することで、現在実行されているジョブを推測できると思います/jenkins/api/json?pretty=true
。Jenkinsの特定のジョブの「ボール」アイコンがアニメーション化されている場合、それが実行されていることがわかります。
JSON応答のジョブオブジェクトの配列を見てください。
{
...
"jobs" : [
{
"name" : "Test Job 1",
"url" : "http://localhost:8000/jenkins/job/Test%20Job%201/",
"color" : "blue"
},
{
"name" : "Test Job 2",
"url" : "http://localhost:8000/jenkins/job/Test%20Job%202/",
"color" : "blue_anime"
}
...
}
この場合"color" : "blue_anime"
は、ジョブが現在実行中であることを"color" : "blue"
示し、ジョブが実行されていないことを示します。
お役に立てれば。
次のようなエンドポイントを使用して、jenkins ツリー API でこれを行うことができます。
http://<host>/api/json?tree=jobs[name,lastBuild[building,timestamp]]
lastBuild
にアクセスすると使用できる属性が表示されます<job-endpoint>/lastBuild/api/json
。
出力をマーシャリングし、次の呼び出しからの "Building: true" をフィルターして、ツリーを使用してジョブで json api を実行し、不要なものをフィルター処理します (これが役立つことを願っています)。
http://jenkins.<myCompany>.com/job/<myJob>/api/json?pretty=true&depth=2&tree=builds[builtOn,changeSet,duration,timestamp,id,building,actions[causes[userId]]]
次のようなものが得られます:
{
"builds" : [
{
"actions" : [
{
},
{
"causes" : [
{
"userId" : "cheeseinvert"
}
]
},
{
},
{
},
{
},
{
}
],
"building" : true,
"duration" : 0,
"id" : "2013-05-07_13-20-49",
"timestamp" : 1367958049745,
"builtOn" : "serverA",
"changeSet" : {
}
}, ...