从Jenkins管道脚本一般调用sh或bat

DRH*_*DRH 14 jenkins jenkins-pipeline

我正在研究一个可以在Windows和Linux上执行的管道脚本.对于这两个系统,我需要调用相同的命令(例如python -V).我可以通过辅助函数完成此任务:

def genericsh(cmd) {
    if (isUnix()) {
        sh cmd
    }
    else {
        bat cmd
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在我的Jenkinsfile:

genericsh 'python -V'
Run Code Online (Sandbox Code Playgroud)

这似乎工作正常,但是isUnix在执行的每个命令的输出日志中都会产生额外的噪音.

有没有更好的方法在Jenkins管道脚本中通过Windows和Linux一般性地调用命令?如果没有,是否有一种机制来抑制管道日志中的isUnix()步骤标记?

mja*_*ard 8

您可以在脚本的早期将isUnix()分配给变量,这意味着您只会看到一次,而不是每个外部命令一次。

env.UNIX = isUnix()
Run Code Online (Sandbox Code Playgroud)

然后

def genericSh(cmd) {
    if (Boolean.valueOf(env.UNIX)) {
        sh cmd
    }
    else {
        bat cmd
   }
}
Run Code Online (Sandbox Code Playgroud)