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

标签 grails jenkins jenkins-pipeline

确定 Jenkins 管道正在运行的当前操作系统的方法是什么?

上下文:我正在构建一个共享的 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
有什么想法吗?

谢谢
费德

最佳答案

据我所知,Jenkins 只区分 windows 和 unix,即如果在 windows 上,使用 bat,在 unix/mac/linux 上,使用 sh。所以你可以使用 isUnix() , more info here , 以确定您使用的是 unix 还是 windows,在 unix 的情况下,请使用 sh 和@Spencer Malone 的回答来提供有关该系统的更多信息(如果需要)。

关于grails - 如何确定 Jenkins 管道中的当前操作系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44105814/

相关文章:

jenkins - 如何在 Jenkins Pipeline 中使用 cucumberSendSlack

grails - Grails属于关系机制

jenkins - 可视化 Jenkins 管道或多分支管道作业

grails - Grails中的executeUpdate

linux - 如何在返回代码 0 时运行 bash 脚本?

Jenkins API 的 Python 日期时间问题

json - 使用 ${params} 将 jenkins 的所有参数写入 JSON 文件中

jenkins - Jenkins 管道中的动态变量与 groovy 方法变量

Grails 3.2.4, IntelliJ 2016.3.4 有一个为脚本代码生成的合成类

grails - 在Grails ACEGI中使用Google和Yahoo OpenID服务