在Jenkins中从curl获取shell错误代码,同时仍在控制台中显示输出

时间:2011-09-23 16:22:00

标签: bash curl jenkins tee

我在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中完成此操作,以便我可以看到输出并测试它是否与特定字符串匹配?

2 个答案:

答案 0 :(得分:3)

当Jenkins通过SSH与slave通信时,没有分配终端,因此该进程没有/dev/tty设备。

也许您可以将其发送到/dev/stderr而不是?它将是交互式会话中的终端和非交互式会话中的某个日志文件。

答案 1 :(得分:0)

您是否考虑过使用Publish over SSH Plugin而不是使用curl?可能会让你头疼。

如果你只是将文件从master复制到slave,那么还有一个插件,copy to slave Plugin

还不能写任何评论,所以我不得不将其作为答案发布。