【问题标题】:How to speed up CI build times when using docker?使用 docker 时如何加快 CI 构建时间?
【发布时间】:2016-09-17 01:59:09
【问题描述】:

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

但是,当我将代码推送到 travis 时,它必须从头开始重新构建和安装所有内容,这需要很长时间! Travis 不支持缓存 docker 层 atm。有没有其他方法可以加快我的构建速度,或者有其他类似的工具允许 docker 层缓存?

【问题讨论】:

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


    【解决方案1】:

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

    主要开发者写在design behind his Travis CI workflow。引用相关部分:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2015-01-22
      • 2021-04-07
      • 2017-03-17
      • 1970-01-01
      • 2020-07-10
      • 2012-01-27
      • 1970-01-01
      • 2010-12-01
      • 2010-10-20
      相关资源
      最近更新 更多