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

时间:2016-05-19 23:57:57

标签: node.js jenkins docker continuous-integration travis-ci

我目前使用docker + travis CI来测试/部署我的应用。这在本地很有用,因为我有node_modules等数据量,而docker的层提供缓存加速构建。

但是,当我将代码推送到travis时,它必须从头开始重建和安装所有内容,这需要永远! Travis不支持缓存docker层atm。是否有其他方法来加速我的构建,或其他类似的工具,允许泊坞窗层缓存?

1 个答案:

答案 0 :(得分:2)

您可能想要调查i3wm如何解决类似问题。

主要开发人员已在design behind his Travis CI workflow上撰写。引用相关部分:

  

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

     

这很好地解决了眼前的问题,但意义重大   成本:构建Docker容器会增加相当多的挂钟时间   到特拉维斯跑,我们想给我们的贡献者快速反馈。   长构建时间的解决方案是缓存:我们可以简单地上传   Docker容器到Docker Hub并使后续构建使用   缓存版本。

     

我们决定将容器缓存一个月,或直到输入到   构建环境(目前是Dockerfiledebian/control)   更改。从技术上讲,这是通过一个小shell脚本实现的   叫ha.sh(得到它?哈希!)打印出的SHA-256哈希值   输入文件。这个哈希附加到当前月份,就是我们使用的   作为Docker容器的标记,例如2016-03-3d453fe1

     

请参阅我们的.travis.yml了解如何将它们全部插入。