我在 Jenkins 中使用了一个 shell 脚本,它在某个时候使用 curl 将文件上传到服务器。我想看看 curl 产生的任何输出,但还要检查它是否是我期望的输出。如果不是,那么我想将 shell 错误代码设置为 > 0,以便 Jenkins 知道脚本失败。
我第一次尝试使用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 + test 事情让我觉得有点像黑客。
有没有办法在 Jenkins 中完成此操作,以便我可以看到输出并测试它是否与特定字符串匹配?