web-dev-qa-db-ja.com

並列実行で異なるパラメーターを使用して同一のジョブを開始するにはどうすればよいですか?

ビルドジョブとテストジョブのパラメーターがあります。

ビルドジョブの後で、1つのパラメーターを使用してテストジョブを同時に実行し、異なるパラメーターを使用して同じテストジョブを並列実行したいと考えています。

                build job  
                   |  
                  / \  
         test job    test job
   with one params    with other params
            |             |

これを達成する方法と、独自のプラグインを作成せずに実行できるかどうか。

ありがとう!

23
Maksim Kolchin

テストジョブを作成するときは、「マルチ構成プロジェクトのビルド」として作成します。ジョブの構成中に、「構成マトリックス」、「ユーザー定義軸」の順に選択します。

この軸の名前をジョブのパラメーターとして使用できます。指定されたパラメータは、異なるジョブで同時に開始されます。 (十分なエグゼキュータが利用可能な場合)

20
HenkI

@Soo Wei Tanの答えを再生すると、次のことがうまくいくことがわかりました。

  • パラメータ化されたトリガープラグイン
  • 「パラメータファクトリ」を選択します
  • 「プロパティファイルごとに、1つのビルドを呼び出す」を選択します

次に、シェルで一連のプロパティファイルを作成すると、残りはトリガープラグインが処理します。

これをトップレベルのマトリックススタイルのジョブと興味深い方法で組み合わせることができます。たとえば、ユーザー定義の軸でトリガーし、グリッドですべてを追跡します。少し隠されていれば、本当に非常に柔軟なアプローチです。

2
dpb

ビルドジョブを終了するときにパラメーターを知っていると仮定すると、 Parameterized Trigger Build プラグインを使用して、異なるパラメーターで両方のダウンストリームジョブを起動できます。

1
Soo Wei Tan

同じ要件があり、 Parameterized Trigger Plugin は、異なる(または同じ)ジョブに異なるパラメーターを並行して渡すのに十分な柔軟性がないことがわかりました。はい、プロパティファイルでパラメータファクトリを使用できますが、それは、Jenkinsを構成する目的でのみ新しいプロパティファイルをバージョン管理に追加することを意味します。構成マトリックスを使用したマルチ構成プロジェクトも複雑すぎるように見えました。

私にとってより優れた、より簡単な解決策は、フェーズの概念を持つ Multijob Plugin でした。 MultiJobには複数のフェーズがあります。フェーズは順次実行され、フェーズ内のジョブは同時に(並行して)実行されます。

MultiJobプラグインをインストールした後、新しいJenkinsアイテムを作成するときに、MultiJob Projectを選択します。次に、1つ以上のフェーズを作成できます。フェーズ内の各ジョブには独自のパラメーターがあります。詳細...->パラメーターの追加をクリックします。

また、特定のジョブが失敗した場合、MultiJob全体が続行または失敗した場合などに何が起こるかを構成するのは非常に簡単です。フェーズを終了する:およびジョブのステータスが次の場合の次のフェーズへの継続条件:設定。

私にとって、これはParameterized Trigger PluginやMult-Configurationプロジェクトよりもはるかに直感的に使用でき、Jenkins以外で追加の構成を必要としませんでした。

1
ptha

1つのオプションは、Build Flowプラグイン( https://wiki.jenkins-ci.org/display/JENKINS/Build+Flow+Plugin )をJob DSLプラグイン( https://wiki.jenkins-ci.org/display/JENKINS/Job+DSL+Plugin )。 Job DSLを使用して、さまざまなコマンドライン引数を使用してビルドを呼び出すジョブステップを定義し、ビルドフローを使用してビルドを調整できます。

0
hgrey

ユースケースが少し異なります。開発サイクル中にメインビルドに対して実行されるテストジョブがあります。サイクルの終わりに向かって;リリース候補ビルドを作成し、それに対して同じテストを実行します。メインビルドのテストも継続したいと思います。

               Main Build     Release Build
                         \   /
                           |
                       same set of tests

これを処理するために、異なる名前で重複するジョブを作成できます。しかし、もっとエレガントでシンプルな方法が必要です。

0
user3979512