Jenkins 宣言型パイプラインの条件付き環境変数 質問する

Jenkins 宣言型パイプラインの条件付き環境変数 質問する

次のような宣言型パイプラインを取得しようとしています。

pipeline {
    environment {
        ENV1 = 'default'
        ENV2 = 'default also'
    }
}

ENV1問題は、任意の条件に基づいてまたはの値を上書きできるようにしたいということですENV2。現在のニーズは、ブランチをベースにすることだけですが、より複雑な条件を想像することもできます。

これを実装する合理的な方法はありますか? オンラインで次のような例をいくつか見ました:

stages {
    stage('Set environment') {
        steps {
            script {
                ENV1 = 'new1'
            }
        }
    }
}

しかし、これは実際の環境変数を設定するものではなく、後の呼び出しをオーバーライドするローカル変数を設定するものであると私は考えています。ENV1問題は、これらの環境変数を nodejs スクリプトで読み取る必要があり、それらは実際のマシンの環境変数である必要があることです。

jenkinsfile で環境変数を動的に設定する方法はありますか?

ベストアンサー1

Groovy'sを試してみてはいかがでしょうか三項演算子:

pipeline {
    agent any
    environment {
        ENV_NAME = "${env.BRANCH_NAME == "develop" ? "staging" : "production"}"
    }
}

または関数への条件を抽出します。

 pipeline {
        agent any
        environment {
           ENV_NAME = getEnvName(env.BRANCH_NAME)
        }
    }

// ...

def getEnvName(branchName) {
    if("int".equals(branchName)) {
        return "int";
    } else if ("production".equals(branchName)) {
        return "prod";
    } else {
        return "dev";
    }
}

しかし、実際には、Groovy構文を使用して何でも行うことができます(少なくともJenkinsでサポートされている機能)

したがって、最も柔軟なオプションは、正規表現とブランチ名を使用することです...したがって、VCS レベルでそのように実行する場合は、Git Flow を完全にサポートできます。

おすすめ記事