我有一组构成分布式系统的有状态服务。每个人都有一个Docker文件,可以构建它并运行其单元测试。我需要检查它们如何以分布式方式相互交互。要运行测试,我需要:
X
之前已完成阶段Y
。是否有针对此类操作的Jenkins插件/扩展,或者是否有任何其他系统或方法可以解决此类问题?
答案 0 :(得分:1)
将gitlab和gitlab-ci与autoscale一起使用,
支持开箱即用,请参阅autoscale runners Gitlab-CI,其中Docker Machine使用驱动程序根据需要自动部署资源,即使在数字海洋上也是如此。
您在.gitlab-ci.yml:
中描述了您的构建和测试查看我的简单docker管道here。
备注1:当保密问题出现时,您可以
备注2:当代码托管在其他地方(例如github)时,您可以在每次提交时将其推送到gitlab以启动构建管道。
如果您需要专业人士来设置此类项目,您可以与我联系,但这不在本问题/答案的范围内
答案 1 :(得分:0)
CloudBees(詹金斯团队)在Jenkins 2中为Docker支持投入了大量精力:https://jenkins.io/doc/pipeline/steps/docker-workflow/
在我看来仍然有点不成熟,但它朝着良好的方向迈进。
我更喜欢gitlab-ci(https://about.gitlab.com/gitlab-ci/)。它非常易于使用且坚固稳定。不幸的是,对我来说,严格的版本控制系统集成(如果你想使用Gitlab-CI,你必须把你的代码放到GitLab中)是一个显示停止(必须把我的代码保存在Github上)。
您也可以考虑一些SaaS产品,即: https://travis-ci.org/ https://buddybuild.com/
答案 2 :(得分:0)
你总是可以编写一个Jenkins可以执行的bash或powershell脚本来执行此操作。
答案 3 :(得分:0)
首先将集成测试移到Docker构建步骤之外。单元测试仍然可以在那里运行,但我更喜欢在容器外部单独进行测试,以最小化构建映像中的测试代码量。
对于多容器集成测试,他们需要在docker run
而不是docker build
之后运行它们。这允许您为每个容器指定dns连接的名称,并控制每个测试运行的顺序。您甚至可以将每个测试存储为docker-compose.yml并处理结果。
将测试与图像构建分开,您可以将测试作为Jenkins管道中的一个步骤添加,以使您能够并行运行部件并在继续之前等待每个阶段完成。