一尘不染

如何在声明管道中处理全局变量?

jenkins

先前曾问过一个有关如何覆盖环境指令中定义的变量的问题,看来这是不可能的。

我想在一个阶段中设置一个变量,并使其可用于其他阶段。在声明性管道中,似乎唯一的方法是在script {}块中。

例如,我需要在结帐后设置一些变量。因此,在结帐阶段结束时,我有一个script {}块来设置这些var,并且可以在其他阶段访问它们。

这可行,但感觉不对。并且出于可读性考虑,我更愿意在管道的顶部声明这些变量并覆盖它们。因此,这意味着在脚本{}块的开头具有一个“设置变量”阶段,该脚本仅定义了vars-
thats丑陋。

我很确定我在这里缺少明显的功能。声明性管道是否具有全局变量功能,或者我必须使用脚本{}


阅读 278

收藏
2020-07-25

共1个答案

一尘不染

就像@mkobit所说的那样,您可以在管道块之外将变量定义为全局级别。你有尝试过吗?

def my_var
pipeline {
    agent any
    stages {
        stage('Example') {
            steps {
                my_var = 'value1'
            }
        }

        stage('Example2') {
            steps {
                printl(my_var)
            }
        }

    }
}
2020-07-25