更新
自2016年6月起,JENKINS-26133已正式标记为已解决。因此,在尝试以下解决方法之前,请首先尝试支持的实现用于sh
/bat
,该实现可使用returnStdout
和returnStatus
参数。
解决办法
不幸的是,这个特性仍然不受支持且缺失。有关更多信息,请参阅官方工单:
JENKINS-26133 Shell script taking/returning output/status 状态:
分配人员:优先级:解决状态:未解决Jesse Glick Major Open
描述
当前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'
可能需要在durable-task中进行一些API更改。