如果测试失败,则停止/失败Docker构建

8

我的目标是,如果Unittests没有全部通过,强制使docker构建失败。 我在DockerFile中使用以下命令:

RUN python3 -m unittest discover test

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

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


发布失败的输出。如果您将该行替换为“exit 1”,构建是否会停止? - Paul Collingwood
1
https://dev59.com/cF8f5IYBdhLWcg3wJf4H - Lior Cohen
1
可能是单元测试脚本即使测试失败也返回退出代码= 0的重复问题(这是@LiorCohen链接的问题)。 - GPhilo
但是,如果您使用脚本方式,则将会出现这些问题。相比之下,我更喜欢在DockerFile中运行一个命令,如果测试不全都成功,则退出。 - C Murphy
1
如果任何步骤未返回0,则docker构建将失败,因此您的问题归结为“如果出现故障,如何使unittest返回非零”。这就是相关问题所涉及的内容。 - GPhilo
1
我只是感到惊讶,你需要编写另一个脚本来实现这个功能,而没有一个命令可以做到这一点。 - C Murphy
1个回答

2
我遇到了同样的问题:在Azure管道中,如果单元测试失败,则Docker构建失败。我在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'."并使Azure管道失败。请注意保留HTML标签,但不要添加解释。

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