shell CircleCI如何处理非0退出代码?

byqmnocz  于 2023-08-07  发布在  Shell
关注(0)|答案(1)|浏览(130)

这似乎是非常基本的,但我找不到它在任何地方的文档。我正在做一个项目,我们通过一个shell脚本 Package 器运行一些测试,比如:

./foo.sh a 
./foo.sh b
./foo.sh c

字符串
foo.sh不输出XUnit格式,因此我们需要一种不同的方式向CircleCI发送失败信号。exit 1(或任何非零退出代码)是否被识别为失败?什么情况会导致CircleCI报告某个步骤失败?

rslzwgfq

rslzwgfq1#

是的,如果任何命令(无论是否运行测试)以非零退出代码退出,则CircleCI将使构建失败。记录在配置参考中。
从上面的链接中提取的这些片段详细说明了为什么会这样:
对于在Linux上运行的作业,shell选项的默认值为/bin/bash -eo pipefail
下面提供了-eo pipefail选项的说明。
第一个月
如果管道(可能由单个简单命令组成)、括号中的子shell命令或作为大括号中的命令列表的一部分执行的命令以非零状态退出,则立即退出。
-o管道故障
如果启用了pipefail,则管道的返回状态是最后一个(最右边)以非零状态退出的命令的值,如果所有命令都成功退出,则返回状态为零。shell会等待管道中的所有命令终止,然后才返回值。

相关问题