c++ - GitLab CI:如何构建然后缓存依赖项,然后在它们发生变化时再次构建它们?
问题描述
假设我有一个 C++ 项目,它依赖于一个外部包,作为第一阶段从 Web 获取(通过使用给定的 git 标签或源路径),然后将其工件传递给构建我的项目的作业。
我想通过某种方式缓存依赖包的构建来加速构建。
理想情况下,我想构建该外部包一次,然后将其缓存以供后续管道使用,而无需在新管道开始时重新构建它。
然后,如果我用来获取外部包的 git 标签或源路径发生了变化(这表明我正在使用不同版本的外部包),则再次构建包并将缓存替换为新版本。
我试图从各种 GitLab CI 文档中获取这个用例,但我找不到正确的答案。
解决方案
...
# Change pip's cache directory to be inside the project directory since we can
# only cache local items.
variables:
PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"
# Pip's cache doesn't store the python packages
# https://pip.pypa.io/en/stable/reference/pip_install/#caching
#
# If you want to also cache the installed packages, you have to install
# them in a virtualenv and cache it as well.
cache:
paths:
- .cache/pip
- venv/
...
推荐阅读
- xml - 在 for-each 中填充前导零
- c# - 流畅的 NHibernate 映射 - 执行时列名错误
- jvm - 任何使用 10 GB 系统内存的 JVM 实例
- eclipse - STS4 / Eclipse:nexus + SSL:证书错误
- solidity - 我收到一个解析器错误:remix 中的预期标识符得到了 lparen 构造函数。
- bash - 使用 awk 拆分过滤
- typescript - 防止 TypeScript 在通过函数传递字符串文字类型时将其扩展为字符串类型
- excel - Excel:将值返回到空白单元格之前最后一个匹配字符串的左侧
- swift - 无法将纹理分配给场景子节点
- android - 为什么我在改造时得到空列表?