在 Jenkins 管道工具指令中展开变量
Expand variable inside Jenkins pipeline tool directive
我希望能够以编程方式决定将哪个工具安装在 Jenkins 管道的代理中。
这是我今天正在使用的东西:
withEnv(["JAVA_HOME=${tool 'OPENJDK11'}",
"PATH+JAVA=${tool 'OPENJDK11'}"]) {
... do stuff ...
}
所以我安装了全局工具 OPENJDK11
以及 OPENJDK14
,现在我想更改 Groovy 脚本以决定哪个 JDK 安装。
所以在上面的部分之前,我已经将工具的名称保存在一个变量中 jdkToInstall
,我如何才能在工具指令中引用这个变量?
我试过:
${tool '${jdkToInstall}'}
和 ${tool '$jdkToInstall'}
.
这不会扩展我的变量,所以我收到一条错误消息,指出找不到工具“$jdkToInstall”。
我也尝试过字符串连接,但最后我的加号和所有内容都出现了类似的错误消息。
变量只展开(${}
)一次就足够了。以下按预期工作:
withEnv(["JAVA_HOME=${tool jdkToInstall}", "PATH+JAVA=${tool jdkToInstall}"]) {
... do stuff ...
}
我希望能够以编程方式决定将哪个工具安装在 Jenkins 管道的代理中。
这是我今天正在使用的东西:
withEnv(["JAVA_HOME=${tool 'OPENJDK11'}",
"PATH+JAVA=${tool 'OPENJDK11'}"]) {
... do stuff ...
}
所以我安装了全局工具 OPENJDK11
以及 OPENJDK14
,现在我想更改 Groovy 脚本以决定哪个 JDK 安装。
所以在上面的部分之前,我已经将工具的名称保存在一个变量中 jdkToInstall
,我如何才能在工具指令中引用这个变量?
我试过:
${tool '${jdkToInstall}'}
和 ${tool '$jdkToInstall'}
.
这不会扩展我的变量,所以我收到一条错误消息,指出找不到工具“$jdkToInstall”。
我也尝试过字符串连接,但最后我的加号和所有内容都出现了类似的错误消息。
变量只展开(${}
)一次就足够了。以下按预期工作:
withEnv(["JAVA_HOME=${tool jdkToInstall}", "PATH+JAVA=${tool jdkToInstall}"]) {
... do stuff ...
}