我目前使用docker + travis CI测试/部署我的应用程序。这在本地非常有用,因为我有用于node_modules等方面的数据卷,而docker的层提供了加速构建的缓存。
但是,当我将代码推送给travis时,它必须从头开始重新构建和安装所有东西,并且需要花费很长时间!Travis不支持缓存码头层atm。有没有其他方法来加快我的构建,或者其他类似的工具,允许对接层缓存?
发布于 2016-05-20 09:09:32
您可能需要研究i3wm是如何解决类似问题的。
主要开发人员已经在他的Travis CI工作流程背后的设计上编写了。引用有关部分:
其基本思想是基于Debian测试构建一个Docker容器,然后在该容器中运行所有构建/测试命令。我们的Dockerfile首先安装编译器、格式化程序和其他开发工具,然后根据i3文件安装i3的所有构建依赖项,这样我们就不需要复制Travis和Debian的构建依赖关系。 这很好地解决了眼前的问题,但代价很大:构建一个Docker容器会为Travis运行增加相当多的挂钟时间,我们希望给我们的贡献者快速反馈。长构建时间的解决方案是缓存:我们可以简单地将Docker容器上传到码头枢纽,并使后续构建使用缓存的版本。 我们决定缓存容器一个月,或者直到构建环境(当前的
Dockerfile
和debian/control
)的输入发生变化。从技术上讲,这是由一个名为ha.sh的shell脚本实现的(懂吗?)哈希!它打印输入文件的SHA-256散列。附加到当前月份的这个散列是我们作为Docker容器的标记使用的,例如2016-03-3d453fe1
。 有关如何将其连接在一起,请参阅我们的.travis.yml。
https://stackoverflow.com/questions/37335910
复制相似问题