8

私たちはCIビルドシステムにJenkinsを使用しています。また、Jenkinsが各変更を独自に構築するように、「並行ビルド」も使用します。つまり、同じジョブを同時に5〜6回ビルドすることがよくあります。これに対応するために、私たちにはそれぞれ12人のエグゼキュータを持つ4つのスレーブがあります。Jenkinsがスレーブを制御するために使用する負荷分散動作を変更するにはどうすればよいですか?

問題は、Jenkinsが実際にスレーブ間で「負荷を分散」しないということです。以前に構築したものと同じスレーブ上にジョブを構築しようとします(おそらく、ソース管理からの同期の時間を短縮するためです)。これは、Jenkinsがビルドの6つのインスタンスすべてを同じスレーブ(または2つのスレーブの間にある可能性が高い)上に構築するため、問題です。 1台のビルドマシンはぶら下がり、非常にゆっくりと動き、残りのマシンはアイドル状態になります。

Jenkinsがスレーブを制御するために使用するロードバランシング動作を変更するプラグインなどがありますか?

答えて

1

あなたはそれが自動的に、ここにあなたが何ができるかのアイデアだんプラグインが見つからない場合:

  • Node Label Parameter plugin
  • をインストールし、あなたの仕事
  • SLAVEパラメータを追加し、ジョブへの制限実行する${SLAVE}
  • 次を実行するトリガージョブを追加します。

    • System Groovy Scriptを介して負荷分散を分析し、次のビルドを開始するノードを決定します。
    • 適切な値をSLAVEパラメータに割り当てることによって、そのノード上のビルドをParametertized Trigger plugin でディスパッチします。負荷分散を分析するために

あなたはGroovy pluginをインストールし、Jenkins Main Module APIを理解する必要があります。ここにはsome useful initial pointersがあります。

+0

上で並列に実行することができます制限するThrottle Concurrent Builds pluginを使用することができます。この提案はもっと多くのものですが、プラグインを使用するよりも「関与」した方がベストな選択肢のようです。 –

3

ビルドマシンが1つ以上のビルドを快適に処理できない場合は、なぜ12人のエグゼキュータでそれらを設定するのですか?そうであれば、エグゼキュータの数を1に減らす必要があります。My Jenkinsには30のスレーブがあり、それぞれに1つのエグゼキュータがあります。

+0

Jenkinsのスレーブは多くのタスクを処理しますが、そのうちの1つはコードをコンパイルすることです。奴隷には12人のエグゼクティブがいます。なぜなら、12個のことを一度に行うことができるからです(ビルドはこれらのものの中で最大のものです)。それは4-5のビルドをうまく動かすこともできますし、物事を遅くするだけです(できるだけ早くビルドのフィードバックを望みます)。これらの奴隷を1人のエグゼクティブに減らすことによって、資源の効率的な使用ではなく、15のコアが大部分の時間を無駄にしてしまいます。 –

12

私たちも同様の問題に直面していました。そこで、Jenkinsのロードバランサを変更して、負荷が最も少ないノードを選択するプラグインをまとめました。 - https://wiki.jenkins-ci.org/display/JENKINS/Least+Load+Plugin

フィードバックは高く評価されています。

+0

すばらしい、ありがとう!最新のプラグイン構築日は現在「2013年6月27日」です。新しいJenkinsのバージョンと互換性がありますか? 1.625.3? – t0r0X

+0

私は現在、1.625.2でそれを使用している必要があります – bstick12

+0

もう一度感謝、私はそれを試してみましょう! – t0r0X

1

また、(私が見つけることができる)、これを行うプラグインがあるように思えませんどのように多くのジョブのインスタンスが同じノード

関連する問題