【问题标题】:Jenkins scripted pipeline nested environment variableJenkins 脚本化管道嵌套环境变量
【发布时间】:2021-12-17 21:10:52
【问题描述】:

我正在使用 Jenkins 脚本化管道并且无法理解如何将环境变量相互嵌套,这是一个 MWE:

// FROM https://jenkins.io/doc/pipeline/examples/#parallel-multiple-nodes

def labels = []

if (HOST == 'true') {
    labels.add(<HOSTNAME>)
}

def builders = [:]

for (x in labels) {
    def label = x

    builders[label] = {
        ansiColor('xterm') {
            node(label) {
                stage('cleanup') {
                    deleteDir()
                }
                stage('build') {

                    env.test = "TESTA"

                    env.intern = '''
                        TEST = "${env.test}"
                    '''

                    sh '''
                        echo $intern
                        printenv
                    '''
                }
            }
        }
    }
}

parallel builders

这里的想法是env.test 包含值TESTA,它将env.intern 设置为TEST = TESTA 这就是我想要发生的事情。在此之后,代码只是打印出值。 遗憾的是结果是TEST = "${env.test}"

如何在 Jenkins 脚本化管道中使用嵌套字符串环境变量?

【问题讨论】:

    标签: jenkins environment-variables jenkins-pipeline pipeline


    【解决方案1】:

    这里的语法差异是 Groovy 中的文字字符串与插值字符串与 shell 步骤方法中的 shell 解释器。

    • ": Groovy 中的插值字符串
    • ':Groovy 中的文字字符串和 shell 解释器中的插值字符串

    本质上,Groovy 变量在管道执行中插入到" 中,在管道执行中在" 中插入一个环境变量,在 shell 解释器中在 ' 中插入一个环境变量(在管道中也必须是在env 对象中访问,但在shell step 方法中是第一类变量表达式)。

    因此,我们可以将env.intern 的赋值固定为:

    env.intern = "TEST = ${env.test}"
    

    env.test 的分配值将被插入到 Groovy 字符串中,并在 intern 键处分配给 env 管道对象。然后,shell 解释器也可以在 shell 步骤方法中访问它,并且管道的其余部分已经正确并且将按预期运行。

    【讨论】:

      【解决方案2】:

      尝试以下方法:

      env.intern = "TEST = ${env.test}"
      

      正如您现在设置的那样,env.intern 的实际结果将是"TEST= ${env.test}"。只要您在设置env.intern 之前设置env.test,您就应该很好。另外,需要注意的是,如果您更改 env.test 的值,那么您需要重置 env.intern 的值,否则它将保持原来设置的 env.test 的值。

      【讨论】:

        猜你喜欢
        • 2021-12-14
        • 2017-08-09
        • 2019-09-24
        • 1970-01-01
        • 2018-10-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多