更新
自 6/2016 JENKINS-26133被正式标记为已解决。因此,在尝试以下解决方法之前,首先尝试支持的实现sh
/bat
使得可以使用 returnStdout
和returnStatus
参数。
解决方法
不幸的是,此功能仍然不受支持且缺失。更多信息请参考官方门票:
JENKINS-26133 Shell 脚本获取/返回输出/状态状态:受让人:优先级:解决方案:打开 Jesse Glick 主要未解决
描述
目前 sh 没有有意义的返回值,如果退出状态不为零则抛出异常。有一个选项让它返回退出代码(零或不)作为整数值会很好:
def r = sh script: 'someCommand', returnStatus: true
当前解决方法:
sh 'someCommand; echo $? > status'
def r = readFile('status').trim()
或者让它返回其标准输出(类似于 shell 反引号):
def lines = sh(script: 'dumpStuff.sh', returnStdout: true).split("\r?\n")
解决方法:
sh 'dumpStuff.sh > result'
def lines = readFile('result').split("\r?\n")
或者让它对标准输入进行一些处理:
sh script: 'loadStuff.sh', stdin: someText
解决方法:
writeFile file: 'input', text: someText > sh 'loadStuff.sh < input'
可能需要对持久任务进行一些 API 更改。