使用docker时如何加快CI的构建时间?

Dyl*_*ess 5 continuous-integration node.js jenkins travis-ci docker

我目前使用docker + travis CI来测试/部署我的应用程序。这在本地非常有效,因为我拥有处理诸如node_modules等之类的数据量,而docker的层提供了缓存以加快构建速度。

但是,当我推送代码进行遍历时,它必须从头开始重建并安装所有内容,这将永远花费!Travis不支持缓存docker层atm。还有其他加快我的构建速度的方法,还是其他允许docker层缓存的类似工具?

joe*_*epd 3

您可能想研究一下i3wm如何解决类似的问题。

\n\n

主要开发人员撰写了有关其 Travis CI 工作流程背后的设计的文章。引用相关部分:

\n\n
\n

基本思想是基于 Debian 测试构建一个 Docker 容器,然后在该容器内运行所有构建/测试命令。我们的 Dockerfile首先安装编译器、格式化程序和其他开发工具,然后根据该 debian/control文件安装 i3 的所有构建依赖项,这样我们就不需要为 Travis 和 xe2x80x99 复制构建依赖项对于 Debian。

\n\n

这很好地解决了眼前的问题,但代价高昂:构建 Docker 容器会给 Travis 运行增加相当多的挂钟时间,我们希望为贡献者提供快速反馈。\n 解决方案较长的构建时间是缓存:我们可以简单地将 Docker 容器上传到Docker Hub,并使后续构建使用缓存的版本。

\n\n

我们决定将容器缓存一个月,或者直到构建环境的输入(当前为Dockerfiledebian/control)\n 发生变化。从技术上讲,这是通过一个名为ha.sh (明白吗?哈希!)的小 shell 脚本实现的,该脚本打印输入文件的 SHA-256 哈希值。这个哈希值附加到当前月份,我们使用\n 作为 Docker 容器的标签,例如2016-03-3d453fe1

\n\n

请参阅我们的.travis.yml了解如何将它们连接在一起。

\n
\n