20

我有一堆使用 docker-compose 连接的 Docker 容器(以前是图)。我发现标榜自己为“Docker CI”服务的服务通常只是在谈论使用 Docker 来运行它们的构建工作者。

我想要一个持续集成服务,它在运行之间保留 Docker 构建缓存,而不是启动一个全新的工作者/文件系统/构建上下文。否则,构建绝对需要永远。理想管理(与https://github.com/groupon/DotCi不同,它不附带 CircleCI 的随时可用的每次构建数据库)。

我发现的唯一一件事是 TeamCity(旧的,您不能像使用 CircleCI 那样轻松地在 yaml 文件中对构建任务进行版本化,您必须维护基础设施等)。Quay.io 没有像 CircleCI 和 Travis 那样提供数据库,因此您必须将 dev 和 prod 分开并在容器内安装一个并在容器构建期间运行单元测试(ew - 您不能生成到未构建的容器中调试东西!)。

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

4

5 回答 5

15

圈子CI 1.0

CircleCI 允许您在构建过程中构建 Docker 容器:https ://circleci.com/integrations/docker

但是,您是对的,这不会缓存 Docker 映像 - 在我们的堆栈上要做到这一点有点棘手,但我们计划很快解决这个问题。

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

CircleCI 2.0 更新

CircleCI 2.0 以 Docker 为中心。您可以构建 Docker 镜像、利用层缓存、使用 Docker Compose,甚至使用官方和自定义 Docker 镜像作为构建环境。

于 2015-01-28T22:42:23.100 回答
3

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

shippable 也值得一试,因为他们的整个基础设施都基于 docker 并以可运输的形式编排多个 docker容器

于 2015-08-21T22:08:17.493 回答
2

Codeship 现在支持存储 Docker 映像缓存并检索它以加快构建速度。

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

于 2015-11-26T10:46:22.193 回答
0

有一个相关的问题“如何让 gitlab-ci-runner DinD 图像缓存中间图像?” .

即使我们的解决方案需要最少的基础设施维护(我们需要运行自己的运行器),我认为还是值得一看的。

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

随着 Docker 对各种 CI 系统的支持得到改进,也许这个解决方案将来会过时,但现在它是性能、维护和可用性之间的良好混合。

于 2016-12-12T12:05:30.717 回答
-2

你见过威克吗?它支持“自带容器”,将缓存您的图像(我认为基于每个工作人员,但在几次构建后,通常使用自定义图像启动会缩短到几秒钟),并且 afaik 还允许构建 Docker 图像。

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

于 2016-02-05T21:56:47.087 回答