2

私は現在、互いにほぼ同時に実行される 2 つのジョブを持っています。

私は 2 つのスレーブをセットアップしているので、ジョブ #1 がスレーブ #1 で開始された場合、ジョブ #2 が開始されたときに、スレーブ #1 がビジーであり、スレーブ #2 を使用していることを確認できることを期待していました。

NodeLabel パラメータ プラグインをインストールし、デフォルト ノードをスレーブ #1 に設定し、ジョブごとにスレーブ #1 と #2 の可能なノードを設定しました。ノードの適格性を「オフライン ノードを無視する」および「ジョブが成功した場合にのみ次のビルドを実行する」に設定しました (何を選択すればよいか 100% 確信が持てなかったからです)。

私が見ている問題は次のとおりです。

  • 2 番目のジョブの開始時にスレーブ #1 が使用中の場合、スレーブ #2 で開始する代わりに、「(pending—Waiting for next available executor on slave#1) [NodeParameterValue: slave#1=slave#2]」と表示されます。

  • このジョブを手動でビルドすると、デフォルトのノードが自動的に選択されず、代わりに「パラメーターを使用してビルド」を使用して選択するようになります

これは、このプラグインの一般的な用途であるに違いないと推測しているため、かなり単純なものが欠けていると思います...使用されていないスレーブに基づいて動的にスレーブを選択しますか?

4

1 に答える 1

2

呼び出されるジョブのデフォルト ノードと可能なノードの両方が同じ 2 つのスレーブに設定されていることを確認することで、これを解決しました。(デフォルトが#1である代わりに)。

次に、スレーブを呼び出すジョブは、ジョブが実行するノードを定義する .properties ファイル内に変数を設定する必要があります。この変数は、呼び出し元のジョブで「ラベル ファクトリ オプションのすべてのノード」を使用して読み取られます。

この記事は非常に役に立ちましたが、私が言うように、彼が推奨する「ノード ラベル パラメータ」オプションの代わりに「ラベル ファクトリのノード」を使用しました: http://www.shaunabram.com/dynamically-set-jenkins-node/

于 2016-05-06T09:16:03.403 に答える