LuG*_*Nat 8 python continuous-integration gitlab gitlab-ci
现在我正在.gitlab-ci.yml为 Gitlab 上托管的 Python 项目编写一个代码。
我真的不知道在哪里放置虚拟环境的设置和requirements.txt.
我的主要资源是GitlabPython.gitlab-ci.yml模板。
在那里,使用关键字在每个作业之前安装 virtualenv,before_script并创建一个名为“venv”的 virtualenv:
before_script:
- python -V # Print out python version for debugging
- pip install virtualenv
- virtualenv venv
- source venv/bin/activate
Run Code Online (Sandbox Code Playgroud)
此外,还设置了“venv”缓存:
cache:
paths:
- .cache/pip
- venv/
Run Code Online (Sandbox Code Playgroud)
我想在我的脚本中执行相同的操作,并另外从requirements.txt我的存储库中安装。之后,我想执行代码分析(pylint,flake8)并在不同阶段进行测试。如果我附加pip install -r requirements.txt到before_script,它会在每个作业中执行,这会产生不必要的日志。
这不是更有意义吗
source venv/bin/activate进来before_script。virtualenv venv生成环境。这个工作也叫一次。pip install -r requirements.txt 您将在哪里创建 venv 并安装您的需求?
小智 5
对于 Gitlab 中托管的一些 python 项目,我遵循的流程是:
pip install -r requirements创建 docker 镜像时执行的地方,不同的 Runners 将在每个不同的阶段使用该镜像pip install -r requirements.txt在您可能调用的阶段中运行一次build例子:
Dockerfile
FROM rasa/rasa-sdk:latest
MAINTAINER William Galindez Arias
COPY ./actions /app/actions/
COPY ./requirements.txt /app/requirements.txt
EXPOSE 8000
WORKDIR /app
USER root
RUN pip install -r requirements.txt
USER 1001
ENTRYPOINT [""]
CMD python -m rasa_sdk --actions actions -vv
Run Code Online (Sandbox Code Playgroud)
下面的.gitlab-ci.yml文件第一步使用上面的docker文件构建Docker镜像,然后推送到其他阶段
stages:
- build
- test
build-image:
stage: build
script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker build -t $ACTIONS_CONTAINER_IMAGE -f Dockerfile .
- docker push $ACTIONS_CONTAINER_IMAGE
tags:
- docker
test-action:
stage: test
image: $ACTIONS_CONTAINER_IMAGE
script:
- echo "testing sdk "
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14014 次 |
| 最近记录: |