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



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

使用的插件 : 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}"

提前致谢

region = "${env.appRegion}"不是步骤或指令的管道保留名称。 这是时髦的声明。你应该把它们放在script步骤里。 如果你使用脚本化管道,你可以在任何地方放置任何类型的时髦语句。但是对于声明式管道,任何时髦的语句都应该包装script步骤中。

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

我不确定上面的哪个代码块是有效的,但你可以试一试。

#!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}"
            }
        }
    }
}

最新更新