我有一堆Docker容器,都是使用docker-compose连接在一起的(前面的图)。我发现那些宣传自己为"Docker CI“服务的服务通常只是在谈论使用Docker来运行他们的构建工人。
我想要一个持续集成服务,在运行之间保留Docker构建缓存,而不是旋转一个全新的工作/文件系统/构建上下文。否则,构建将花费绝对的时间。理想的托管(与https://github.com/groupon/DotCi不同,CircleCI的每个构建的数据库都没有提供)。
我找到的唯一的东西是TeamCity (旧的,你不能像使用CircleCI那样容易地在yaml文件中版本构建任务,你必须维护基础设施,等等)。Quay.io不像CircleCI和Travis那样提供数据库,所以你必须将dev和prod分成两部分,并在容器内部安装一个,并在容器构建期间运行单元测试(啊-你不能衍生到一个未构建的容器中来调试东西!)。
如何在Docker容器集群上运行持续集成?
发布于 2015-01-29 06:42:23
CircleCI 1.0
Docker允许您构建CircleCI容器作为构建的一部分:https://circleci.com/integrations/docker
然而,你说得对,这不会缓存Docker镜像--在我们的堆栈中,要做到这一点有点棘手,但我们计划很快解决这个问题。
与此同时,许多客户已经使用CircleCI的内置(非Docker)缓存,通过使用docker save
/docker load
:https://circleci.com/docs/docker#caching-docker-layers来缓存它。这并不理想,但它应该可以帮助您度过难关,直到我们能够更好地支持它。
针对CircleCI 2.0进行了更新
Docker 2.0是以CircleCI为中心的。您可以构建Docker镜像,利用层缓存,使用Docker Compose,甚至使用官方和自定义的Docker镜像作为您的构建环境。
发布于 2015-08-22 06:08:17
我目前正在使用CircleCI,有关使用docker缓存的良好指南,请参阅http://tschottdorf.github.io/cockroach-docker-circleci-continuous-integration
shippable也值得一试,因为他们的整个基础设施都是基于docker,并使用shippable formations编排多个docker容器。
发布于 2016-12-12 20:05:31
这里有一个相关的问题"How can I let the gitlab-ci-runner DinD image cache intermediate images?"。
即使our solution需要最少的基础设施维护(我们需要运行我们自己的runner),我认为它值得一看。
基本上,我们不在Docker中运行Docker,但我们只为runners创建了一个单独的VM。这对安全和清理任务有一些影响,请参阅我们的runner的README。
也许在未来,随着Docker对各种CI系统的支持得到改进,这个解决方案将会过时,但现在它是性能、可维护性和可用性之间的一个很好的组合。
https://stackoverflow.com/questions/28201628
复制相似问题