我目前使用docker + travis CI来测试/部署我的应用。这在本地很有用,因为我有node_modules等数据量,而docker的层提供缓存加速构建。
但是,当我将代码推送到travis时,它必须从头开始重建和安装所有内容,这需要永远! Travis不支持缓存docker层atm。是否有其他方法来加速我的构建,或其他类似的工具,允许泊坞窗层缓存?
答案 0 :(得分:2)
您可能想要调查i3wm如何解决类似问题。
主要开发人员已在design behind his Travis CI workflow上撰写。引用相关部分:
基本思想是基于Debian测试构建一个Docker容器 然后在该容器内运行所有构建/测试命令。我们的 Dockerfile安装编译器,格式化程序和其他开发工具 首先,然后基于的安装i3的所有构建依赖项
debian/control
文件,这样我们就不需要复制构建了 Travis和Debian的依赖关系。这很好地解决了眼前的问题,但意义重大 成本:构建Docker容器会增加相当多的挂钟时间 到特拉维斯跑,我们想给我们的贡献者快速反馈。 长构建时间的解决方案是缓存:我们可以简单地上传 Docker容器到Docker Hub并使后续构建使用 缓存版本。
我们决定将容器缓存一个月,或直到输入到 构建环境(目前是
Dockerfile
和debian/control
) 更改。从技术上讲,这是通过一个小shell脚本实现的 叫ha.sh(得到它?哈希!)打印出的SHA-256哈希值 输入文件。这个哈希附加到当前月份,就是我们使用的 作为Docker容器的标记,例如2016-03-3d453fe1
。请参阅我们的.travis.yml了解如何将它们全部插入。