Gitlab CI / CD: Pytest работает с Conda - PullRequest
       32

Gitlab CI / CD: Pytest работает с Conda

0 голосов
/ 25 октября 2018

Контекст: я пытаюсь настроить CI / CD gitlab, который проверяет мою сборку и запускает мои тесты pytest при нажатии моего кода.

Проблема: Когда я нажимаю свой код, задание CI / CD не выполняетсяпоговорка:

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

Вопрос: Как мне избавиться от ошибки и как правильно настроить мой Gitlab CI / CD?

Подробности: Я(частично) следовал этому руководству , и я создал .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/

My 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 голосов
/ 26 октября 2018

Я изменил свой .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 .

Перегруппировав tests и testbuild в одной части.Теперь он работает, он все устанавливает и запускает тесты, хотя это кажется плохим способом сделать это, потому что я больше не делаю разделение.Гитлаб не сохраняет окружающую среду между стадиями.Если вы действительно хотите разделить эти два элемента, посмотрите на это: GitLab CI сохраняет среду между этапами сборки

...