使用以下行考虑Jenkinsfile:
sh('sudo -E make upload')
该脚本会打印很多调试数据,它的最后输出行是目标URL,我想在下一阶段使用它。
如果我不带任何参数运行sh
,则无法获取结果。如果我使用returnStdout: true
运行它,则会得到结果,但调试行不会随时打印。
在Jenkins上执行时,如何打印shell脚本的输出,并以字符串形式访问其标准输出?
答案 0 :(得分:2)
在第一个命令上使用tee
,然后读取输出文件。
sh ('sudo -E make upload | tee url')
url = sh (script: 'tail -1 url | grep "^https://.*$"', returnStdout: true).trim()
tee
将make upload
的标准输出重定向到标准输出和一个名为url
的文件。输出通常会打印在屏幕上,因此在Jenkins UX上可见。第二条命令从url
中提取所需的输出。
答案 1 :(得分:0)
这可能有效:
sh (script: 'sudo -E make upload', returnStdout: true).readLines().last()
但是如果您在Groovy沙箱中运行,则可能需要将其列入白名单。