Jenkins Pipeline中如何从node块内获取执行结果并传递给上层函数?
问题原因
你遇到的返回null是因为Jenkins Pipeline中node块作为闭包执行时,块内的return语句仅作用于闭包本身,不会自动将值传递到外层的foo函数作用域。
解决方法
你可以在foo函数顶层定义变量承接node块内的执行结果,最后在函数外层返回该变量即可,示例代码如下:
def foo () { def lsResult = null node('some-node-that-has-bash') { lsResult = sh(script: 'ls', returnStdout:true).trim() } return lsResult }
补充说明
- 代码中添加
trim()是为了移除sh步骤返回结果末尾默认携带的换行符,避免后续处理时出现多余空白 - 只要是Jenkins流水线支持的可序列化类型,都可以通过这种变量承接的方式从
node块内向外传递值
内容的提问来源于stack exchange,提问作者Wudong
相关产品推荐
相关产品推荐

