任何CI服务是否允许您构buildDocker容器并使用Docker构buildcaching?

我有一堆Docker容器,都使用docker-compose(之前的图)来连接起来。 我发现自称为“Docker CI”服务的服务通常只是在谈论使用Docker来运行他们的构build工作人员。

我想要一个持续的集成服务,在运行之间保留Docker构buildcaching,而不是启动一个全新的工作/文件系统/构build上下文。 否则,build立绝对永远。 理想的pipe理(与https://github.com/groupon/DotCi不同,CircleCI没有随时可用的构build数据库)。

我发现的唯一的东西就是TeamCity(老的,你不能像使用CircleCI一样容易地在yaml文件中编译任务,你必须维护基础设施等)。 Quay.io没有提供像CircleCI和Travis这样的数据库,所以你必须分叉dev和prod,并在容器内部安装一个,并在容器构build期间运行unit testing(例如 – 你不能产生一个未build成的容器debugging的东西!)。

如何在Docker容器集群上运行持续集成?

更新 :CircleCI 2.0是以Docker为中心的。 您可以构buildDocker镜像,利用图层caching,使用Docker Compose,甚至可以使用官方和定制的Docker镜像作为构build环境。


CircleCI允许您将Docker容器构build为构build的一部分: https ://circleci.com/integrations/docker

然而,你是正确的,我们不会cachingDocker镜像 – 我们的堆栈有点棘手,但是我们正在计划尽快解决这个问题。

与此同时,一些客户使用CircleCI的内置(非Docker)caching,通过使用docker save / docker load : https ://circleci.com/docs/docker#caching-docker-layers来caching它。 这并不理想,但它应该让你度过,直到我们能够更好地支持这个。

我目前正在使用CircleCI,请参阅http://tschottdorf.github.io/cockroach-docker-circleci-continuous-integration以获取使用dockercaching的好指南

因为他们的整个基础设施都是围绕docker进行的,并且可以组装出多个docker集装箱。

Codeship现在支持存储Docker镜像caching,并为了加快构build速度而对其进行检索。

https://codeship.com/documentation/docker/caching/

有一个相关的问题“我怎样才能让gitlab-ci-runner的DinD图像caching中间图像? 。

即使我们的解决scheme需要最less的基础设施维护(我们需要运行我们自己的跑步者),我认为这是值得一看的。

基本上我们不在Docker中运行Docker,但是我们只为运行者创build一个单独的VM。 这对安全和清理任务有一些影响,请参阅我们的跑步者的自述文件 。

也许这个解决scheme在将来会变得过时,因为Docker对各种CI系统的支持得到了改善,但是现在它在性能,维护和可用性之间是一个很好的结合。

你见过w ?吗? 它支持“携带自己的容器”,将caching你的图像(我认为每个工作人员的基础上,但经过一些build设通常启动减less到几秒钟,自定义图像),afaik也允许build立docker的图像。

缺点:它需要太多的GitHub权限 。