如何在不使用 venv 的情况下在 Gitlab CI/CD 中缓存 python 依赖项?
How to cache python dependecies in Gitlab CI/CD without using venv?
我正在尝试在我的 .gitlab-ci.yml 文件中使用缓存,但时间只会增加(通过添加空行进行测试)。我想缓存我用 pip 安装的 python 个包。
这是我安装和使用这些包的阶段(其他阶段使用Docker):
image: python:3.8-slim-buster
variables:
PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"
cache:
paths:
- .cache/pip
stages:
- lint
- test
- build
- deploy
test-job:
stage: test
before_script:
- apt-get update
- apt-get install -y --no-install-recommends gcc
- apt install -y default-libmysqlclient-dev
- pip3 install -r requirements.txt
script:
- pytest tests/test.py
在运行这条流水线之后,随着每一条流水线,流水线时间只会增加。
我按照 GitLab 文档中的这些步骤进行操作 - https://docs.gitlab.com/ee/ci/caching/#cache-python-dependencies
尽管我没有使用 venv,因为它没有它也能工作。
我仍然不确定如果不使用 PIP_CACHE_DIR 变量为什么需要它,但我遵循了文档。
缓存 python 依赖项的正确方法是什么?我不想使用 venv。
PIP_CACHE_DIR
是一个 pip 特性,可用于设置缓存目录。
的第二个答案解释了它。
对此可能存在一些分歧,但我认为对于 pip 包或节点模块之类的东西,为每个管道重新下载它们会更快。
Gitlab使用
缓存包时
cache:
paths:
- .cache/pip
Gitlab 创建的缓存被压缩并存储在某处(存储位置取决于运行器配置)。这需要压缩和上传缓存。然后,当创建另一个管道时,需要下载并解压缩缓存。如果使用缓存会减慢作业执行速度,那么删除缓存可能是有意义的。
我正在尝试在我的 .gitlab-ci.yml 文件中使用缓存,但时间只会增加(通过添加空行进行测试)。我想缓存我用 pip 安装的 python 个包。 这是我安装和使用这些包的阶段(其他阶段使用Docker):
image: python:3.8-slim-buster
variables:
PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"
cache:
paths:
- .cache/pip
stages:
- lint
- test
- build
- deploy
test-job:
stage: test
before_script:
- apt-get update
- apt-get install -y --no-install-recommends gcc
- apt install -y default-libmysqlclient-dev
- pip3 install -r requirements.txt
script:
- pytest tests/test.py
在运行这条流水线之后,随着每一条流水线,流水线时间只会增加。 我按照 GitLab 文档中的这些步骤进行操作 - https://docs.gitlab.com/ee/ci/caching/#cache-python-dependencies 尽管我没有使用 venv,因为它没有它也能工作。 我仍然不确定如果不使用 PIP_CACHE_DIR 变量为什么需要它,但我遵循了文档。
缓存 python 依赖项的正确方法是什么?我不想使用 venv。
PIP_CACHE_DIR
是一个 pip 特性,可用于设置缓存目录。
对此可能存在一些分歧,但我认为对于 pip 包或节点模块之类的东西,为每个管道重新下载它们会更快。
Gitlab使用
缓存包时cache:
paths:
- .cache/pip
Gitlab 创建的缓存被压缩并存储在某处(存储位置取决于运行器配置)。这需要压缩和上传缓存。然后,当创建另一个管道时,需要下载并解压缩缓存。如果使用缓存会减慢作业执行速度,那么删除缓存可能是有意义的。