1

Jenkins で条件付きビルド ジョブを設定するのに苦労しています。これが私のセットアップです:

JobA <- JobB <- JobC <- JobC-testsなどの一連のジョブがあります。<-は「アーティファクトを生成する」ことを意味します。したがって、JobAは、 JobBが依存するアーティファクトなどを生成します(右から左に読むと、「依存する」という意味になります)。

ダウンストリーム ジョブの 1 つで、JobCが 2 つの SCM リポジトリを使用するとします。それらを fooC と barC と呼びます。JobC-testsには、barC-tests と呼ばれる別のファイルセットがあります。

JobC-testsには時間がかかります。JobCは非常に高速です。barC または barC-tests が変更されていない限り、JobC -tests の実行を避けたいです。

ビルドを次のように設定したいと思います。

  1. fooC が変更された場合、JobC をビルドしますが、JobC-tests はビルドしません。
  2. barC が変更された場合は、JobC をビルドし、JobC が終了したら JobC-tests をビルドします。
  3. barC-tests が変更された場合、最後に成功した JobC アーティファクトを使用して JobC-tests を構築します。
  4. JobC を手動で開始する場合は、JobC-tests をビルドしないでください。
  5. JobC-tests を手動で開始する場合は、JobC をビルドしないでください。
  6. アップストリーム ジョブ (JobB) の JobC ブロック。

Conditional BuildStep プラグインを使用してみましたが、まったく機能しないようです。JobC を SCM トリガーから barC を除外するように設定し、JobC-tests を barC をポーリングするように設定し、JobC-tests の条件付きビルド ステップを使用して、SCM の変更によってトリガーされた場合に JobC のみをビルドします。barC-tests への変更はビルドをトリガーしません。これがまったく機能していれば問題ありませんでした。私が抱えていた問題は、JobC-tests が JobC をまったくトリガーしないことでした。

また、barC への変更をポーリングし、JobC のビルド中にブロックしてから JobC-tests をビルドする「ポーリング」ジョブを作成しようとしました。しかし、ポーリングジョブが上流ジョブになり、JobC が上流ジョブをブロックするため、デッドロックが発生します。

どんな助けやアイデアも大歓迎です。

4

0 に答える 0