但是,我们正在辩论是否应将应用程序测试(某些单元,某些集成)放在docker
RUN
命令(例如RUN /bin/bash -c "source activate cool_env; pytest"
)中或在使用CI堆栈(例如Jenkins,Openshift)进行构建之后对已构建的容器执行测试。#1 楼
我支持J.Doe关于在构建和测试阶段的每个阶段使用单独的Docker文件的建议。这种方法还允许您:出于任何原因(例如已知的间歇性故障)重新运行测试阶段,而无需重新执行构建阶段
运行多个不同版本使用相同的构建并行测试阶段-例如,而不是运行由序列化测试组成的单个长测试阶段,从而可能显着提高总体管道速度。
#2 楼
如果将所有内容都运行在同一容器中...PRO:您还解决了内联配置测试环境的CasC难题
CON:您错过了黑盒测试部分,假设您的容器不接受外部连接。糟糕!
可能的解决方案:因此,我将使用基于Docker的多阶段声明性管道:每个工件都沿其级联的每个Docker环境。
评论
还有一个新功能,即多阶段构建,使您可以在同一Dockerfile中进行构建和测试。