web-dev-qa-db-ja.com

Jenkinsfileに環境変数が存在するかどうかを確認できますか

プロジェクトでMultibranchパイプラインを実行しています。

Jenkinsfileの動作は、トリガーに従って変更する必要があります。パイプライン1をトリガーする2つのイベントがあります。プッシュイベント2.プル要求。

環境変数 'CHANGE_ID'を確認しようとしています( 'CHANGE_ID'はプルリクエストでのみ使用可能です)。 参照

パイプラインがプッシュイベントによってトリガーされ、 'CHANGE_ID'変数をチェックすると、例外がスローされます(パイプラインがプルリクエストによってトリガーされた場合、コードは正常に機能します)。

コード:

stage('groovyTest'){
    node('mynode1') {
        if (CHANGE_ID!=NULL){
            echo "This is Pull request"
        }else{
            echo "This is Push request"
        }
    }
}

エラー:

groovy.lang.MissingPropertyException: No such property: CHANGE_ID for class: groovy.lang.Binding
    at groovy.lang.Binding.getVariable(Binding.Java:63)
    at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onGetProperty(SandboxInterceptor.Java:224)
    at org.kohsuke.groovy.sandbox.impl.Checker$4.call(Checker.Java:241)
    at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.Java:238)
    at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.Java:221)
    at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.Java:221)
    at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.getProperty(SandboxInvoker.Java:28)
    at com.cloudbees.groovy.cps.impl.PropertyAccessBlock.rawGet(PropertyAccessBlock.Java:20)
    at WorkflowScript.run(WorkflowScript:5)
    at ___cps.transform___(Native Method)

Jenkinsfileに「CHANGE_ID」変数が存在するかどうかを確認するにはどうすればよいですか?

25
kishs1991

使用する前に確認できます。

 if (env.CHANGE_ID) {
 ...

doc から

スクリプトパイプラインからアクセス可能な環境変数。たとえば、env.PATHまたはenv.BUILD_ID。 Pipelineで使用可能な環境変数の完全かつ最新のリストについては、組み込みの Global Variable Reference を参照してください。

44
aristotll

宣言的パイプラインの場合、次のようになります。

pipeline {
    // ...
    stages {
        // ...
        stage('Build') {
            when {
                allOf {
                    expression { env.CHANGE_ID != null }
                    expression { env.CHANGE_TARGET != null }
                }
            }
            steps {
                echo "Building PR #${env.CHANGE_ID}"
            }
        }
    }
}

notPRをビルドする場合にのみステージを実行するには:

when { expression { env.CHANGE_ID == null } }
16
friederbluemle