确定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
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
## OS Linux
有任何想法吗?
谢谢费德
据我所知,詹金斯只区分Windows和Unix,即如果在Windows上使用bat,在Unix / mac / linux上使用sh。因此,您可以在此处使用isUnix()(更多信息)来确定您使用的是Unix还是Windows,对于unix,请使用sh和@Spencer Malone的答案来支持有关该系统的更多信息(如果需要)。
isUnix()