我在Jenkins中使用shell脚本,在某个时刻,使用curl将文件上传到服务器。我想看看卷曲产生的输出,但也检查它是否是我期望的输出。如果不是,那么我想将shell错误代码设置为>为了让詹金斯知道剧本失败了。
我首先尝试使用curl -f
,但这会导致管道在上传失败后立即被切断,错误输出永远不会到达客户端。然后我尝试了这样的事情:
curl ...params... | tee /dev/tty | \
xargs -I{} test "Expected output string" = '{}'
这适用于普通的SSH shell,但在Jenkins控制台输出中我看到:
tee: /dev/tty: No such device or address
我不确定为什么这是因为我认为Jenkins正在使用普通的SSH shell与奴隶进行通信。在任何情况下,整个xargs +测试对我来说都是一个黑客攻击。
有没有办法在Jenkins中完成此操作,以便我可以看到输出并测试它是否与特定字符串匹配?
答案 0 :(得分:3)
当Jenkins通过SSH与slave通信时,没有分配终端,因此该进程没有/dev/tty
设备。
也许您可以将其发送到/dev/stderr
而不是?它将是交互式会话中的终端和非交互式会话中的某个日志文件。
答案 1 :(得分:0)
您是否考虑过使用Publish over SSH Plugin而不是使用curl?可能会让你头疼。
如果你只是将文件从master复制到slave,那么还有一个插件,copy to slave Plugin。
还不能写任何评论,所以我不得不将其作为答案发布。