我目前使用 docker + travis CI 来测试/部署我的应用程序。这在本地非常有效,因为我有 node_modules 等数据量,并且 docker 的层提供缓存加速构建。
但是,当我将代码推送到 travis 时,它必须从头开始重建和安装所有内容,这需要很长时间! Travis 不支持缓存 docker 层 atm。有没有其他方法可以加快我的构建速度,或者是否有其他类似的工具允许 docker 层缓存?
最佳答案
您可能想调查如何 i3wm已经解决了类似的问题。
主要开发人员在 design behind his Travis CI workflow 上写过.引用相关部分:
The basic idea is to build a Docker container based on Debian testing and then run all build/test commands inside that container. Our Dockerfile installs compilers, formatters and other development tools first, then installs all build dependencies for i3 based on the
debian/control
file, so that we don’t need to duplicate build dependencies for Travis and for Debian.This solves the immediate issue nicely, but comes at a significant cost: building a Docker container adds quite a bit of wall clock time to a Travis run, and we want to give our contributors quick feedback. The solution to long build times is caching: we can simply upload the Docker container to the Docker Hub and make subsequent builds use the cached version.
We decided to cache the container for a month, or until inputs to the build environment (currently the
Dockerfile
anddebian/control
) change. Technically, this is implemented by a little shell script called ha.sh (get it? hash!) which prints the SHA-256 hash of the input files. This hash, appended to the current month, is what we use as tag for the Docker container, e.g.2016-03-3d453fe1
.See our .travis.yml for how to plug it all together.
关于node.js - 使用 docker 时如何加快 CI 构建时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37335910/