如果测试失败,则停止/失败 docker build

Posted

技术标签:

【中文标题】如果测试失败,则停止/失败 docker build【英文标题】:Stop/fail docker build if tests fail 【发布时间】:2019-10-21 10:38:46 【问题描述】:

如果单元测试没有全部通过,我的目标是强制 docker 构建失败。我在 DockerFile 中使用以下行:

RUN python3 -m unittest discover test

我的单元测试在测试目录的类中。运行测试,但失败的测试不会导致构建失败。

我知道非零退出代码是如何停止构建,但使用此命令似乎不会发生这种情况。

【问题讨论】:

发布失败的输出。如果将该行替换为“exit 1”,构建会停止吗? ***.com/questions/24972098/… Unit test script returns exit code = 0 even if tests fail 的可能重复项(这是@LiorCohen 链接的问题) 如果任何步骤未返回 0,docker build 将失败,因此您的问题归结为“如果出现故障,我如何使 unittest 返回非零”。这就是链接问题的全部内容。 我很惊讶您必须编写另一个脚本来实现这一点,并且没有命令可以做到这一点。 【参考方案1】:

遇到了同样的问题:如果 azure 管道中的 unittest 失败,则 docker build 失败 我将以下代码放在我的 build.yml 文件中。

errors=$(docker logs careplan-tests-1 2>&1 | grep "FAILED" -c) if [ $errors > 0 ]; then echo -e "unittest tests failed" docker rm apiunittest exit 1 fi

输出为“##[error]Bash exited with code '1'”。在 docker build 中并导致 azure 管道失败。

【讨论】:

以上是关于如果测试失败,则停止/失败 docker build的主要内容,如果未能解决你的问题,请参考以下文章

如果脚本中记录了错误,则 PlayMode 测试默认停止

如果第二次测试失败,cypress 将停止执行,但我需要继续运行其他测试?在赛普拉斯

量角器中的测试失败会停止执行休息测试用例

Xcode UI 测试 - 当测试套件中的任何给定测试失败时停止测试?

如果单独运行 MSTest 测试成功,如果与其他测试一起运行则失败

如何在测试过程中停止 PHPUnit 但仍然获得失败/报告列表?