纯声明性詹金斯流水线:跨阶段可变

时间:2019-08-15 16:20:21

标签: variables jenkins jenkins-plugins jenkins-declarative-pipeline

我想在一个纯粹的声明性Jenkins管道中一步设置一个变量,并在下一阶段使用它。

我不想:

  • 使用脚本块设置变量。
  • 使用临时文件存储值。

有可能吗?

我已经尝试过的事情:

  • 环境块的使用:无法覆盖阶段内全局环境块中设置的变量。特定于阶段的环境块中的变量不会超过特定阶段的范围。
  • 导出环境变量(使用“ sh”步骤)不会超出该阶段的范围。
  • 似乎不可能在“步骤”中直接分配变量。

请帮助!

1 个答案:

答案 0 :(得分:0)

我认为解决此问题的一种方法是通过共享库创建一个临时变量。这样,您可以保持声明性。好吧,至少在管道中。

https://jenkins.io/doc/book/pipeline/shared-libraries/

也许有一种更简单的方法,但这是我唯一想保持其声明性的方法。

  1. 创建共享库。
  2. 为共享库创建一个vars / tempVar.goovy
    def temp = null

    def call(args) {
        temp = args.value
    }
  1. 将其导入您的管道并使用。
        stages {
            stage('Stage - 1') {
                steps {
                    tempVar value: 'Test Temp Var'
                }
            }
            stage('Stage - 2') {
                steps {
                    echo "${tempVar.temp}"
                }
            }
        }