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

11

这似乎非常基础,但我在文档中找不到它。我正在一个项目上工作,在其中通过shell脚本包装器运行一些测试,例如:

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

foo.sh 没有输出 XUnit 格式,因此我们需要一种不同的方式来向 CircleCI 发送失败信号。 exit 1(或任何非零退出代码)被认为是失败吗?什么条件会导致 CircleCI 报告步骤失败?

1个回答

9
是的,如果任何命令(无论是否运行测试)以非零退出代码退出,CircleCI都会失败构建。这在配置参考中有记录。
以下摘录详细说明了为什么会出现这种情况:
对于在Linux上运行的作业,默认的shell选项值为/bin/bash -eo pipefail
提供了关于-eo pipefail选项的描述如下:
-e 如果管道(可以由单个简单命令、括在圆括号中的子shell命令或由大括号括起来的命令列表中的一个命令)以非零状态退出,则立即退出。
-o pipefail 如果启用了pipefail,管道的返回状态是最后一个(最右边)以非零状态退出的命令的值,如果所有命令都成功退出,则返回零。Shell在返回值之前等待管道中的所有命令终止。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接