web-dev-qa-db-ja.com

Jenkins API:ビルドパラメーターでフィルターされたジョブのリストを取得する-このGitコミットをビルドしたジョブは何ですか?

Jenkinsジョブにさまざまなパラメーターを送信しています。その中にはGitコミットSHA1があります。そのパラメーター値を使用したジョブのリストを取得したい(Git SHA1-このコミットを実行したジョブは?).

次のURLからすべてのビルドが得られます。

http://jenkins.example.com/api/json?tree=jobs[name,builds[number,actions[parameters[name,value]]]]&pretty=true

レンダリングに時間がかかり(6秒)、ビルドが多すぎます(5 MBのビルド)。

そのURLからのサンプル出力:

{
  "jobs" : [
    {
      "name" : "Job name - Build",
      "builds" : [
        {
          "actions" : [
            {
              "parameters" : [
                {
                  "name" : "GIT_COMMIT_PARAM",
                  "value" : "5447e2f43ea44eb4168d6b32e1a7487a3fdf237f"
                }
              ]
            },
(...)

Jenkins JSON APIを使用して、特定のビルドパラメーター値を持つすべてのジョブを一覧表示するにはどうすればよいですか?

21
HNygard

Jenkins JSON APIを使用して、特定のビルドパラメーター値を持つすべてのジョブを一覧表示するにはどうすればよいですか?

JSON APIについてはわかりませんが、XML APIを使用してtreexpathパラメーターを組み合わせることができます:

http://jenkins_url/api/xml?tree=jobs[name,builds[actions[parameters[name,value]]]]&xpath=/hudson/job[build/action/parameter[name="GIT_COMMIT_PARAM"][value="5447e2f43ea44eb4168d6b32e1a7487a3fdf237f"]]/name&wrapper=job_names&pretty=true

結果サンプル:

<job_names>
  <name>JOB1</name>
  <name>JOB2</name>
  <name>JOB3</name>
  ...
</job_names>

注:ビルドの少なくとも1つが目的のパラメーターでビルドされた場合、ジョブはこのリストに含まれます

5

また、これを探していて、幸運にも私は素晴らしい要点を見つけました

https://Gist.github.com/justlaputa/5634984

質問に答えるには:

jenkins_url + /api/json?tree=jobs[name,color]

上記の例を使用して

http://jenkins.example.com/api/json?tree=jobs[name,color]

だから、あなたがする必要があるのは、元のURLからbuildsパラメータを削除するだけであるように思えます、あなたは大丈夫です

4
Craig Wayne

JSON APIではサポートされていないようですが、XML APIを使用できる場合は、XPATHを介してクエリを実行できます。以下のサンプルを参照してください

http://jenkins.example.com/api/xml?tree=jobs[name,builds[number,actions[parameters[name,value]]]]&exclude=hudson/job/build/action/parameter[value!=%275447e2f43ea44eb4168d6b32e1a7487a3fdf237f%27]

必要に応じて、より適切なクエリ文字列を調整できます。

http://blog.dahanne.net/2014/04/02/using-jenkins-hudson-remote-api-to-check-jobs-status/

2
Larry Cai