Jenkinsパイプラインスクリプトのラベルからノード名を取得する方法

chris_f

ビルド結果をテストするための一連の仮想マシンがあります。すべてのVMはJenkinsスレーブノードとして構成されています。マスターノードはVMを起動および停止できます。

VMはグループにタグ付けされた3つ(cluster1cluster2)、および異なる役割を持ちます(role1role2role3)。

引数としてGROUP名(StringParameterValue)を取り、パイプラインスクリプトを作成したいと思います。

  1. グループに属するVMを起動します
  2. 各ノードで個別のテストを(並行して)実行します
  3. 完了後にVMを停止します。

パイプラインスクリプトはおおよそ次のようになります。

def VM1 = ??? get name of the node labeled ("GROUP && role1") ???;
def VM2 = ??? get name of the node labeled ("GROUP && role2") ???;
def VM3 = ??? get name of the node labeled ("GROUP && role3") ???;
def VMs = [VM1, VM2, VM3];

node (master) {

    stage 'Start'
    def start = [:];
    for ( vm in VMs ) {
        start["${vm}"] = {
            build job: 'Start_VM', parameters: [
                [$class: 'StringParameterValue', name: 'VMNAME', value: vm]];
        }
    }
    parallel start;

    def tests = [:];
    for (int i = 0; i < VMs.size; i++) {
        tests["role${i}"] = {
            node (VMs[i]) {
                build job: "Test_role${i}";
            }
        }
    }
    parallel tests;

    Stage 'Stop'
    def stop = [:];
    for ( vm in VMs ) {
        stop["${vm}"] = {
            build job: 'Stop_VM', parameters: [
                [$class: 'StringParameterValue', name: 'VMNAME', value: vm]];
        }
    }
    parallel stop;
}

Q:グループラベルから個々のノード名を取得するにはどうすればよいですか?

chris_f

ラベルからノード名をフェッチする関数を実装しました。

def roles = ['role1', 'role2', 'role3'];

def getNodeNames (group, roles) {
    def lgroup = Jenkins.instance.getLabel(group)
    def result = [:]

    for (role in roles) {
        def lrole = lgroup.and(Jenkins.instance.getLabel(role))
        def nodes = lrole.getNodes()
        if (nodes.size() > 0) {
            result[role] = nodes[0].getNodeName()
        }
    }
    print "getNodeNames($group) = ${result}"
    return result
}

def VMs = getNodeNames(GROUP)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

共有ライブラリのsrcファイルから完全なJenkinsスクリプトパイプラインステージを実行する方法

分類Dev

Linuxシェルスクリプトのコマンドラインで "../"から完全パスを取得する方法

分類Dev

jenkinsパイプラインgroovyスクリプトから設定ファイルをロードする推奨される方法

分類Dev

JenkinsパイプラインのファイルからPowershellスクリプトを実行する

分類Dev

Azure DevOps:リリースパイプラインのPowerShellスクリプトからビルドAzureパイプラインからビルドアーティファクトを取得するにはどうすればよいですか?

分類Dev

AzureDevOps-ビルドパイプラインレベルからリリースパイプラインレベルまでの変数値を取得します

分類Dev

スクリプト化されたパイプラインで、Jenkinsビルドパラメーターを取得する方法

分類Dev

アセットパイプライン(ペーパークリップ)からの画像をRailsデータベースにシードする方法は?

分類Dev

cp linuxスクリプトのパラメーターとして(別のファイルから)ファイル名を取得する方法

分類Dev

複数のラベルを使用してJenkinsパイプラインスクリプトでノードを選択するにはどうすればよいですか?

分類Dev

Jenkinsパイプラインでノードラベルを設定する

分類Dev

パイプラインから複数のノードでJenkinsジョブをトリガーする方法(1つのジョブのみを実行)

分類Dev

gitlabパイプラインでマージリクエストラベルを取得する方法

分類Dev

Jenkinsパイプラインファイルのアップロードから元のファイル名を取得する

分類Dev

jenkinsパイプラインからスクリプトを実行する

分類Dev

クラスObjectiveCの外部からプライベートインスタンス変数/プロパティを取得および設定する方法は?

分類Dev

コマンドラインからクリップボードにテキストをパイプする方法

分類Dev

AzureMLパイプラインスクリプトのステップからモデルを登録する方法

分類Dev

宣言された順序でJavaクラスからプライベートフィールド名を取得する方法はありますか?

分類Dev

Jenkinsパイプラインでリポジトリ名を取得する方法

分類Dev

Jenkinsパイプライン:vars dirのgroovyスクリプトからカスタムグローバルにアクセスする方法は?

分類Dev

jenkinsパイプラインの別のジョブから最新のビルド番号を取得する方法

分類Dev

GitHubプルリクエストからJenkins 2.0パイプラインジョブをトリガーする方法

分類Dev

JenkinsでActiveChoicesプラグインのgroovyスクリプトからシェルを実行する方法

分類Dev

Jenkins共有ライブラリからパイプラインにクラスをインポートする方法

分類Dev

Objectivecのスーパークラスからプライベートメソッドとプロパティをオーバーライドする方法

分類Dev

Jenkinsパイプラインスクリプト内でソースコマンドを使用する方法

分類Dev

パイプラインプラグインを使用して特定のノードでジェンキンスビルドをトリガーする方法

分類Dev

MavenベースのJavaプロジェクトをコンパイルしてコマンドラインから実行する方法

Related 関連記事

  1. 1

    共有ライブラリのsrcファイルから完全なJenkinsスクリプトパイプラインステージを実行する方法

  2. 2

    Linuxシェルスクリプトのコマンドラインで "../"から完全パスを取得する方法

  3. 3

    jenkinsパイプラインgroovyスクリプトから設定ファイルをロードする推奨される方法

  4. 4

    JenkinsパイプラインのファイルからPowershellスクリプトを実行する

  5. 5

    Azure DevOps:リリースパイプラインのPowerShellスクリプトからビルドAzureパイプラインからビルドアーティファクトを取得するにはどうすればよいですか?

  6. 6

    AzureDevOps-ビルドパイプラインレベルからリリースパイプラインレベルまでの変数値を取得します

  7. 7

    スクリプト化されたパイプラインで、Jenkinsビルドパラメーターを取得する方法

  8. 8

    アセットパイプライン(ペーパークリップ)からの画像をRailsデータベースにシードする方法は?

  9. 9

    cp linuxスクリプトのパラメーターとして(別のファイルから)ファイル名を取得する方法

  10. 10

    複数のラベルを使用してJenkinsパイプラインスクリプトでノードを選択するにはどうすればよいですか?

  11. 11

    Jenkinsパイプラインでノードラベルを設定する

  12. 12

    パイプラインから複数のノードでJenkinsジョブをトリガーする方法(1つのジョブのみを実行)

  13. 13

    gitlabパイプラインでマージリクエストラベルを取得する方法

  14. 14

    Jenkinsパイプラインファイルのアップロードから元のファイル名を取得する

  15. 15

    jenkinsパイプラインからスクリプトを実行する

  16. 16

    クラスObjectiveCの外部からプライベートインスタンス変数/プロパティを取得および設定する方法は?

  17. 17

    コマンドラインからクリップボードにテキストをパイプする方法

  18. 18

    AzureMLパイプラインスクリプトのステップからモデルを登録する方法

  19. 19

    宣言された順序でJavaクラスからプライベートフィールド名を取得する方法はありますか?

  20. 20

    Jenkinsパイプラインでリポジトリ名を取得する方法

  21. 21

    Jenkinsパイプライン:vars dirのgroovyスクリプトからカスタムグローバルにアクセスする方法は?

  22. 22

    jenkinsパイプラインの別のジョブから最新のビルド番号を取得する方法

  23. 23

    GitHubプルリクエストからJenkins 2.0パイプラインジョブをトリガーする方法

  24. 24

    JenkinsでActiveChoicesプラグインのgroovyスクリプトからシェルを実行する方法

  25. 25

    Jenkins共有ライブラリからパイプラインにクラスをインポートする方法

  26. 26

    Objectivecのスーパークラスからプライベートメソッドとプロパティをオーバーライドする方法

  27. 27

    Jenkinsパイプラインスクリプト内でソースコマンドを使用する方法

  28. 28

    パイプラインプラグインを使用して特定のノードでジェンキンスビルドをトリガーする方法

  29. 29

    MavenベースのJavaプロジェクトをコンパイルしてコマンドラインから実行する方法

ホットタグ

アーカイブ