Jenkins 声明性管道中环境变量声明中的全局变量

Jenkins 声明性管道中环境变量声明中的全局变量,jenkins,jenkins-pipeline,Jenkins,Jenkins Pipeline,是否可以使用globals在声明性管道中设置环境变量的值 下面的示例按预期工作 #!groovy @Library("SomeSharedLibrary@1.0.0") _ pipeline { agent none environment { FOO = "World" BAR = "Hello ${FOO}!" } stages{ stage("Simple test") { steps

是否可以使用globals在声明性管道中设置环境变量的值

下面的示例按预期工作

#!groovy
@Library("SomeSharedLibrary@1.0.0") _
pipeline {
    agent none
    environment {
        FOO = "World"
        BAR = "Hello ${FOO}!"
    }
    stages{
        stage("Simple test") {
            steps {
                echo BAR //prints "Hello World!"
            }
        }
    }
}
以下代码失败。它使用
ASharedLibrary
中定义的全局
var

#!groovy
@Library("ASharedLibrary@1.0.0") _
pipeline {
    agent none
    environment {
        FOO = "World"
        BAR = glovalvar.greet(FOO)
    }
    stages{
        stage("Simple test") {
            steps {
                echo BAR //fails telling that BAR is not defined.
            }
        }
    }
}
在上一个示例中,如果我将
FOO
替换为条中的实际值,
BAR
将采用正确的值


有什么想法吗?我做错什么了吗?

考虑到管道语法支持这一点:如果您使用
字符串FOO
=>显式地键入
FOO
,该怎么办。。。还是带有
…greet(FOO.toString())
的参数?注:在“中”之后缺少了一些东西,不是吗?你确定
glovavar
没有打字错误吗?@StefanHanke我也这么想,但是管道不应该在
'glovavar'未找到的情况下提前失败吗?@GeroldBroser-Jenkins 2.67默默地忽略错误,并且没有定义变量。使用时会抛出错误。@StefanHanke我明白了。谢谢你的信息。