Gitlab CI / CD:与Conda一起运行的Pytest

时间:2018-10-25 17:08:16

标签: python-3.x continuous-integration gitlab pytest conda

上下文:我正在尝试设置一个gitlab CI / CD,以测试我的构建并在推送代码时运行pytest测试。

问题:当我推送代码时,CI / CD作业失败:

/bin/bash: line 55: pytest: command not found
ERROR: Job failed: exit code 1

问题:如何摆脱错误以及如何正确设置gitlab CI / CD?

详细信息:我(部分)关注了this guide,并制作了一个.gitlab-ci.yml文件,如下所示:

image: continuumio/miniconda3:latest

testbuild :
  stage: build
  script:
    - conda create --name test_env --file requirements.txt
    - source activate test_env
    - python setup.py install

tests:
  stage: test
  script:
    - cd tests && pytest .

我的项目架构:

$ tree -L 1
project
├── package1/
├── package2/
├── data/
├── out/
├── __pycache__
├── requirements.txt
├── setup.py
└── tests/

我的requirements.txt(为了方便读者,从很多无用的内容中删除)是使用命令conda list -e创建的:

# This file may be used to create an environment using:
# $ conda create --name <env> --file <this file>
# platform: linux-64
scikit-learn=0.20.0=py36h4989274_1
scipy=1.1.0=py36hfa4b5c9_1
# ...
setuptools=40.4.3=py36_0
pip=10.0.1=py36_0
py=1.7.0=py36_0
pytest=3.9.1=py36_0
python=3.6.6=h6e4f718_2
wheel=0.32.1=py36_0

1 个答案:

答案 0 :(得分:1)

我已将.gitlab-ci.yml更改为:

image: continuumio/miniconda3:latest

testbuild :
  stage: build
  script:
    - conda create --name test_env --file requirements.txt
    - source activate test_env
    - python setup.py install
    - cd tests && pytest .

在同一部分中重新组合teststestbuild。现在它可以工作,可以安装所有程序并运行测试,尽管这样做似乎感觉很不好,因为我不再进行分离了。

正如hoefling在评论中所说,问题在于gitlab不能在阶段之间保留环境。如果您确实希望将两者分开,请查看以下内容:GitLab CI preserve environment between build stages