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 の実行を避けたいです。
ビルドを次のように設定したいと思います。
- fooC が変更された場合、JobC をビルドしますが、JobC-tests はビルドしません。
- barC が変更された場合は、JobC をビルドし、JobC が終了したら JobC-tests をビルドします。
- barC-tests が変更された場合、最後に成功した JobC アーティファクトを使用して JobC-tests を構築します。
- JobC を手動で開始する場合は、JobC-tests をビルドしないでください。
- JobC-tests を手動で開始する場合は、JobC をビルドしないでください。
- アップストリーム ジョブ (JobB) の JobC ブロック。
Conditional BuildStep プラグインを使用してみましたが、まったく機能しないようです。JobC を SCM トリガーから barC を除外するように設定し、JobC-tests を barC をポーリングするように設定し、JobC-tests の条件付きビルド ステップを使用して、SCM の変更によってトリガーされた場合に JobC のみをビルドします。barC-tests への変更はビルドをトリガーしません。これがまったく機能していれば問題ありませんでした。私が抱えていた問題は、JobC-tests が JobC をまったくトリガーしないことでした。
また、barC への変更をポーリングし、JobC のビルド中にブロックしてから JobC-tests をビルドする「ポーリング」ジョブを作成しようとしました。しかし、ポーリングジョブが上流ジョブになり、JobC が上流ジョブをブロックするため、デッドロックが発生します。
どんな助けやアイデアも大歓迎です。