【发布时间】:2021-10-26 16:07:01
【问题描述】:
问题
现在我正在为一个托管在 Gitlab 上的 Python 项目写一个 .gitlab-ci.yml。
我真的不知道把虚拟环境的设置和安装要求从requirements.txt放到哪里。
我的主要资源是Gitlab Python.gitlab-ci.yml template。
在那里,virtualenv 会在每个作业之前安装,使用 before_script 关键字并创建一个名为 'venv' 的 virtualenv:
before_script:
- python -V # Print out python version for debugging
- pip install virtualenv
- virtualenv venv
- source venv/bin/activate
此外,设置了“venv”的缓存:
cache:
paths:
- .cache/pip
- venv/
我想在我的脚本中做同样的事情,另外从我的仓库中的requirements.txt 安装。之后,我想在不同阶段执行代码分析(pylint,flake8)和测试。如果我将pip install -r requirements.txt 附加到before_script,它会在每个作业中执行,这会产生不必要的日志。
问题
这样做不是更有意义
- 定义缓存的子目录。 (如上所示)
- 只能在
before_script中调用source venv/bin/activate。 - 为设置添加一个阶段或作业,调用
virtualenv venv以生成环境一次。这项工作也调用pip install -r requirements.txt一次。
你会在哪里创建你的 venv 并安装你的需求?
【问题讨论】:
-
如果 python 包在 docker 容器中运行,则可以绕过 virtualenv,将容器视为虚拟环境。
标签: python gitlab continuous-integration gitlab-ci