web-dev-qa-db-ja.com

Jenkinsに特定のスレーブノードで特定のプロジェクトを実行するように指示する

Jenkinsに特定のスレーブで特定のプロジェクトを実行するように指示するにはどうすればよいですか?

Jenkinsマスターノードと、アプリケーションのステージングに使用するスレーブノードを設定しました。しかし、私が作成したスレーブノードで実行するようにプロジェクトを構成する方法がわかりません。

94
Lorin Hochstein

ジョブ構成の[このジョブを実行できる場所を制限する]チェックボックスをオンにして、スレーブの名前を指定します。

後でさらにスレーブを追加する場合、各スレーブにラベルを設定し、ジョブ構成でそれらを指定できます。

このリファレンスドキュメントを参照してください。

90
gareth_bowles

パイプラインジョブを実行している場合、最初にラベル(たとえば、「スレーブ」)をスレーブノード(または現在呼び出されているように見えるエージェント)に追加します。

次に、パイプラインスクリプトで、ジョブを実行するラベルを指定します。

宣言的パイプライン:

pipeline {
    agent {label 'slave'}
    stages {
        ...
    }
}

スクリプトパイプライン:

node (label: 'slave') {
    ...
}

このジョブは、ラベルが「スレーブ」のすべてのノードで実行されます。この特定のスレーブでのみジョブを実行する場合は、ラベルを再利用しないでください。そしてもちろん、ラベルは「奴隷」である必要はありません。それはあなたが望むものにすることができます。

更新:

スクリプトパイプラインで、ノードの名前が「My Node」の場合、次のようにすることもできます。

node ('My Node') {
    ...
}

特定のノードでのみコードブロックを実行する場合は、これが便利です。ただし、ラベルを使用するとより柔軟になり、ノードを追加してワークロードを共有しやすくなります。

18
jpyams

Node/Labelをパラメーターとして使用する場合は、インストール NodeLabel Parameter Plugin をインストールします。

7
Alex Okrushko