Jenkinsシナリオの詳細:
======================
-Jenkinsのビルドエグゼキューター(マスター/スレーブのいずれか)の数:3-
アップストリームジョブ:USJobとこのジョブ任意のビルドエグゼキュータで実行できます
-ダウンストリームジョブ:DSJobとこのジョブのクワイエット期間は120秒で、特定のビルドエグゼキュータでのみ実行するように関連付けられています。
- USJobはビルドステップでこれを持っています:echo "Happy BirthdayJames" そしてこのジョブを完了するのに5秒かかります
- DSJobはビルドステップでこれを持っています:echo "James bond isdead"
そしてこのジョブを完了するのに5秒かかります
ここで、USJob(親/アップストリームジョブ)を5回実行するとします。これにより、 DSJob (子/ダウンストリームジョブ)も5回呼び出されます。次に、必要なのは次のとおりです。
- JenkinsはUSJobを5回実行する必要があるため、各呼び出し中にDSJob子ジョブを呼び出します。
DSJobを実行する代わりに(USJobから呼び出されるとすぐに)、DSJobは「120秒間」アイドル状態またはキューに入れられます(つまり、休止期間に設定されます)。
このシナリオを見ると、UPJobはDSJobを5回呼び出し、DSJobはそのかなりの期間が満たされるまでキューにとどまります。したがって、クワイエット期間が終了すると、JenkinsはDSJobを開始します。
私の質問: 私が見ようとしているのは、DSJob(子ジョブ)でどのような設定/オプションを設定できるかです。これにより、DSJobは1回だけ実行され、何度呼び出されてもかまいません。 言い換えれば、ジェームズ・ボンド/誰かが一度死んだら、彼は再び死ぬことはできません!……わかった!しかし、誰かが彼のBDayにハッピーバースデーN回を望むことができます。
-この概念は、TFS(Team Foundation Server-ビルド定義のTRIGGERセクション内)で継続的インテグレーション(CI)ビルドを累積的に実行することに似ています。つまり、ソース管理に変更があったらすぐにビルドを実行しますが、すべての変更を累積します。実行中のCIビルドが進行中になるまでソース管理を行い、それが完了すると、次のCIビルドは開発者によって行われた他のすべてのソース管理の変更を選択します。