首页 > 解决方案 > GitLab CI:如何构建然后缓存依赖项,然后在它们发生变化时再次构建它们?

问题描述

假设我有一个 C++ 项目,它依赖于一个外部包,作为第一阶段从 Web 获取(通过使用给定的 git 标签或源路径),然后将其工件传递给构建我的项目的作业。

我想通过某种方式缓存依赖包的构建来加速构建。

理想情况下,我想构建该外部包一次,然后将其缓存以供后续管道使用,而无需在新管道开始时重新构建它。

然后,如果我用来获取外部包的 git 标签或源路径发生了变化(这表明我正在使用不同版本的外部包),则再次构建包并将缓存替换为新版本。

我试图从各种 GitLab CI 文档中获取这个用例,但我找不到正确的答案。

标签: c++continuous-integrationgitlabgitlab-ci

解决方案


模板不行吗?链接:https ://gitlab.com/gitlab-org/gitlab-foss/-/blob/master/lib/gitlab/ci/templates/Python.gitlab-ci.yml

...
# 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/
...

推荐阅读