一尘不染

如何确定Jenkins管道中的当前操作系统

jenkins

确定Jenkins管道正在运行的当前OS的方式是什么?

上下文:我正在构建一个共享的Jenkins管道脚本,该脚本应在所有平台(Windows,OSX,Linux)上运行,并在每个平台上执行不同的操作。

我尝试了类似的东西:

import org.apache.commons.lang.SystemUtils

if (SystemUtils.IS_OS_WINDOWS){
   bat("Command")
}
if (SystemUtils.IS_OS_MAC){
   sh("Command")
}
if (SystemUtils.IS_OS_LINUX){
   sh("Command")
}

但是即使它在Windows或Mac上运行,node它也总是进入SystemUtils.IS_OS_LINUX分支

我尝试了这样的快速管道。

node('windows ') {
     println ('## OS ' + System.properties['os.name'])
}
node('osx ') {
     println ('## OS ' + System.properties['os.name'])
}
node('linux') {
     println ('## OS ' + System.properties['os.name'])
}

每个节点都可以在具有正确操作系统的机器上正确运行,但是所有节点都可以打印 ## OS Linux

有任何想法吗?

谢谢费德


阅读 299

收藏
2020-07-25

共1个答案

一尘不染

据我所知,詹金斯只区分Windows和Unix,即如果在Windows上使用bat,在Unix / mac /
linux上使用sh。因此,您可以在此处使用isUnix()更多信息)来确定您使用的是Unix还是Windows,对于unix,请使用sh和@Spencer
Malone的答案来支持有关该系统的更多信息(如果需要)。

2020-07-25