如何跨管道阶段访问文件夹变量?

时间:2019-04-25 19:28:46

标签: jenkins jenkins-pipeline jenkins-plugins

我正在尝试在一个文件夹下创建多个管道作业。在此文件夹下,我创建了一些文件夹属性。我很难在工作的多个阶段使用此文件夹属性。

使用的插件:https://wiki.jenkins.io/display/JENKINS/Folder+Properties+Plugin

def region
pipeline {
    agent any
    stages {
        stage('Assign values to global properties') {
            steps {
                withFolderProperties{
                    region = "${env.appRegion}"
                }       
            }
        }
        stage('Print') {
            steps {
                print(region)      
            }
        }
    }
}

错误:

Expected a step @ line 8, column 21.
                       region = "${env.appRegion}"

预先感谢

2 个答案:

答案 0 :(得分:1)

region = "${env.appRegion}"不是步骤或指令的管道保留名称。这是古怪的说法。您应该将它们放在script步骤中。如果您使用脚本管道,则可以在任何地方放置各种常规语句。但是对于声明性管道,任何常规语句都应包含在script步骤中。

steps {
    script {
        withFolderProperties{
            region = "${env.appRegion}"
        }
    }
}

steps {
    withFolderProperties{
        script {
            region = "${env.appRegion}"
        }
    }
}

我不确定上面的哪个代码块可以工作,但是您可以尝试一下。

答案 1 :(得分:0)

#!groovy

def CI_NAMESPACE = ""
withFolderProperties{
    CI_NAMESPACE = "${env.CI_NAMESPACE}"
}

println "CI_NAMESPACE = ${CI_NAMESPACE}"

if (CI_NAMESPACE == '' || CI_NAMESPACE == null || CI_NAMESPACE == 'null') {
    currentBuild.result = 'ABORTED'
    error('Not defined CI_NAMESPACE in Folder properies plugin!')
}

pipeline {
    environment {
        CI_NAMESPACE = "${CI_NAMESPACE}"
    }
    stages {
        stage('Test') {
            steps {
                echo "CI_NAMESPACE: ${env.CI_NAMESPACE}"
            }
        }
    }
}