私はジェンキンスで並列テストを実行しています。
私が設定した方法は、他の3つのジョブを並行して実行するビルドフロージョブです。他の3つのジョブは、個別のテストXMLファイルに接続されています。
最初にこれを開始したとき、2つのジョブしか実行されず、3番目のジョブが他のジョブの1つが終了した後でしか実行されないという問題がありました。
これは、Jenkinsのエグゼキューターの数が_2
_に設定されているためであることがわかりました。これは、現在_5
_に設定されています。
しかし、関心事として、将来の計画のためだけに、ジェンキンスはあなたが持つことができるエグゼキューターの量に上限を設けていますか?それとも、超えてはいけない推奨数はありますか?それとも、それを実行している環境だけにあるのでしょうか?
上限/上限数がある場合は?これに対処する最善の方法は、マスター/スレーブシナリオを使用して、ワークロードを複数のVMに分散することだと思います。
たとえば、6つのエグゼキューターに設定した場合、これは各VMに6つのエグゼキューターがいることを意味しますか?または、VM間で共有される6つのエグゼキュータ?
それは実際には環境とJenkinsのインスタンスに割り当てられたリソースの量に依存します。 Jenkinsが許可するエグゼキュターの量に制限があるとは思いません。現在、問題のない20のエグゼキューターでJenkinsの単一のインスタンスを実行しています。もちろん、ビルドパイプラインとコミットパターンによっては、設定するエグゼキューターの数が多すぎる場合があります。実際にすべてのエグゼキューターを実際に使用したかどうかを常に監視する必要があります。
Jenkinsのインスタンスのリソースの上限に近づいていて、リソース制限を増やすことができない場合は、スレーブの使用を開始する必要があります。
リソースの使用状況を監視する1つの方法は、 監視プラグイン を使用することです。
私はこれと同じ質問をぶちまけて、ジェンキンス自体のフィールドの隣にこれを見つけました:
編集:より具体的に言うと、Jenkinsバージョン2.73.3のUIでは、ジョブの構成に少し?
s各フィールドの右側にあります。それらをクリックすると、そのフィールドで何が期待されているかについての詳細が表示されます。 executorsフィールドの場合、これを見つける必要があります。
Jenkinsがこのエージェントで実行できる同時ビルドの最大数。まず、マシンのCPUコアの数が適切です。高い値を設定すると、各ビルドに時間がかかりますが、全体的なスループットが向上する可能性があります。たとえば、1つのビルドがCPUにバインドされていて、同時に実行されている2番目のビルドがI/Oにバインドされている可能性があるため、2番目のビルドはその時点でのスペアI/O容量を利用できます。
エージェントには少なくとも1人のエグゼキューターが必要です。ビルドがエージェントで一時的に実行されないようにするには、エージェントのページで[このノードを一時的にオフラインにする]ボタンを使用します。
これはJenkinsマスターには適用されません。エグゼキューターの数をゼロに設定すると、マスターでビルドが実行されなくなります。
私が理解できることから、それはあなたの仕事が正確に何をしているかに依存します。デプロイスクリプトは単にgcloud
コマンドを実行するだけなので、より多くのエグゼキューターを持つインスタンスでそれらを実行します。ただし、Seleniumテストは、1つのエグゼキューター/コアを持つインスタンスで実行されます。どうやら、私たちはそれを少し安全な面で再生しています。