如果测试失败,则停止/失败 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的主要内容,如果未能解决你的问题,请参考以下文章
如果第二次测试失败,cypress 将停止执行,但我需要继续运行其他测试?在赛普拉斯
Xcode UI 测试 - 当测试套件中的任何给定测试失败时停止测试?