我有以下具有3个不同作业的 yml 配置文件:
stages:
- build
- test
- analyze
build:
stage: build
script:
- apt-get update -qy
- apt-get install -y python3-dev python3-pip
- pip3 install -r requirements.txt
test:
stage: test
script:
- coverage run --source='.' manage.py test
cache:
paths:
- .coverage
analyze:
stage: analyze
script:
- flake8
- coverage report
在第一份工作中,我安装了需求,其中包括 coverage 或 flake8 。但是这些工具在以下作业中使用。我曾尝试使用“依赖关系”或“缓存”,但没有用:只能共享项目根目录下的文件/目录,不能共享/ user / local / bin下的二进制文件。
我试图指示 pip install 的另一个目录,但是二进制文件安装在/ user / local / bin中。
我发现的解决方法是在每个作业中安装依赖项,但是我认为这不是最理想的解决方案。
我认为必须为此提供更好的解决方案。
谢谢。
答案 0 :(得分:0)
我刚刚找到了解决方案,至少对于 python3 (对我来说足够了):
python3 有一个用于管理虚拟环境的内置工具: venv
使用 venv ,我们可以在项目根目录中创建虚拟环境,并缓存该目录,并在每个作业中启用虚拟环境。
variables:
VENV_NAME: "env"
cache:
paths:
- $VENV_NAME
first_job:
script:
- apt-get update -qy
- apt-get install -y python3-dev python3-pip python3-venv
- python3 -m venv $VENV_NAME
- source $VENV_NAME/bin/activate
- pip3 install -r requirements.txt
next_jobs:
script:
- source $VENV_NAME/bin/activate
- echo "hello world!"
PD:不要忘记从覆盖率或其他分析工具中排除虚拟环境目录