在 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 ... 
}