34

Remote API を介して Jenkins サーバーに関するほぼすべてを確認できますが、現在実行中のジョブのリストは確認できません。

これ、

http://my-jenkins/computer/api/json

また

http://my-jenkins/computer/(master)/api/json

最も論理的な選択肢のように思えますが、実際に実行されているジョブについては (ジョブの数以外は) 何も言いません。

4

6 に答える 6

62

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 つのビルドがあることに注意してください。

于 2014-03-14T11:20:51.647 に答える
25
于 2013-02-13T02:39:10.757 に答える
12

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"示し、ジョブが実行されていないことを示します。

お役に立てれば。

于 2013-02-13T01:53:46.163 に答える
9

次のようなエンドポイントを使用して、jenkins ツリー API でこれを行うことができます。

http://<host>/api/json?tree=jobs[name,lastBuild[building,timestamp]]

lastBuildにアクセスすると使用できる属性が表示されます<job-endpoint>/lastBuild/api/json

于 2014-09-01T09:05:50.983 に答える
9

出力をマーシャリングし、次の呼び出しからの "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" : {

  }
}, ...
于 2013-05-07T22:43:27.873 に答える