是否有分布式系统的Jenkins或其他开源CI?

时间:2016-09-20 01:59:25

标签: jenkins service docker continuous-integration distributed-computing

我有一组构成分布式系统的有状态服务。每个人都有一个Docker文件,可以构建它并运行其单元测试。我需要检查它们如何以分布式方式相互交互。要运行测试,我需要:

  • 能够在被视为单次测试运行的不同节点上同时运行多个Docker文件。
  • 能够在每个Docker文件的命令执行顺序中设置障碍。换句话说,假设所有Docker文件同时运行,我需要确保所有文件在开始阶段X之前已完成阶段Y
  • 能够在任何节点发生故障时停止。

是否有针对此类操作的Jenkins插件/扩展,或者是否有任何其他系统或方法可以解决此类问题?

4 个答案:

答案 0 :(得分:1)

将gitlab和gitlab-ci与autoscale一起使用,

支持开箱即用,请参阅autoscale runners Gitlab-CI,其中Docker Machine使用驱动程序根据需要自动部署资源,即使在数字海洋上也是如此。

您在.gitlab-ci.yml:

中描述了您的构建和测试
  • 定义不同的阶段,(build,test1 ....)
  • 每个阶段的所有构建/测试必须在进入下一阶段之前完成
  • 并且每个阶段都是并行的,具体取决于可用的资源。

查看我的简单docker管道here

备注1:当保密问题出现时,您可以

  • 一个。在gitlab上创建一个私有存储库
  • 湾在您自己的服务器上托管gitlab *

备注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管道中的一个步骤添加,以使您能够并行运行部件并在继续之前等待每个阶段完成。