作业之间共享安装要求

问题描述 投票:2回答:1

我有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

在第一个工作,我安装的要求,其中有覆盖或flake8。但是,这些工具在下面的作业中使用。我一直在使用“依赖”或“高速缓存”试过,但没有奏效:仅将文件/项目的根目录下迪尔斯可以共享,而不是在/用户/ local / bin中的二进制文件。

我试图表明画中画安装别的目录,但二进制安装在/用户/ local / bin目录。

我已经找到了解决方法是在每个作业安装依赖关系,但我认为这是不太理想的解决方案。

我认为必须有一个更好的解决方案。

谢谢。

pip continuous-integration gitlab-ci
1个回答
0
投票

我只是找到了解决办法,至少对python3(足以让我):

python3具有用于管理虚拟ENVS一个内置的工具:VENV

使用VENV,我们可以在项目的根目录创建虚拟ENV,缓存此目录,并且使我们在每个作业虚拟ENV。

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:不要忘了从覆盖范围或其他分析工具排除虚拟ENV目录

© www.soinside.com 2019 - 2024. All rights reserved.