Как явно добавить проект в путь Python в CircleCI 2.0? - PullRequest
0 голосов
/ 08 сентября 2018

Я не уверен, как правильно установить PYTHONPATH в CircleCI 2.0 для запуска сборки. Это проект Django, который ранее успешно создавался на CircleCI 1.0, поэтому я начал с использования автоматически сгенерированного файла config.yml.

version: 2
  jobs:
    build:
      working_directory: ~/mygithubname/myproject
      parallelism: 1
      shell: /bin/bash --login

environment:
  CIRCLE_ARTIFACTS: /tmp/circleci-artifacts
  CIRCLE_TEST_REPORTS: /tmp/circleci-test-results
  DATABASE_URL: 'sqlite://:memory:'
  DJANGO_SETTINGS_MODULE: myproject.settings.test
  DEBUG: 0
  PYTHONPATH: ${HOME}/myproject/myproject

docker:
- image: circleci/build-image:ubuntu-14.04-XXL-upstart-1189-5614f37
  command: /sbin/init
steps:

- checkout

- run: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS

- restore_cache:
    keys:
    # This branch if available
    - v1-dep-{{ .Branch }}-
    # Default branch if not
    - v1-dep-master-
    # Any branch if there are none on the default branch - this should be unnecessary if you have your default branch configured correctly
    - v1-dep-
- run: pip install -r requirements/testing.txt

- save_cache:
    key: v1-dep-{{ .Branch }}-{{ epoch }}
    paths:
    # This is a broad list of cache paths to include many possible development environments
    # You can probably delete some of these entries
    - vendor/bundle
    - ~/virtualenvs
    - ~/.m2
    - ~/.ivy2
    - ~/.bundle
    - ~/.go_workspace
    - ~/.gradle
    - ~/.cache/bower

- run: pytest

- store_test_results:
    path: /tmp/circleci-test-results

- store_artifacts:
    path: /tmp/circleci-artifacts
- store_artifacts:
    path: /tmp/circleci-test-results

Команда run: pytest не работает в CircleCI с ошибкой, указывающей pytest-django could not find a Django project (no manage.py file could be found). You must explicitly add your Django project to the Python path to have it picked up. Я знаю, что означает ошибка, но не знаю, как ее исправить в версии 2 (она работает при сборке в версии 1), и я пытаюсь найди что-нибудь в документах.

1 Ответ

0 голосов
/ 03 апреля 2019

В окружности окружности переменные нельзя использовать с расширением вам нужно либо использовать BASH_ENV https://circleci.com/docs/2.0/env-vars/#using-bash_env-to-set-environment-variables

- run: echo 'export PYTHONPATH="${PYTHONPATH}:${HOME}/myproject/folder_with_manage.py:${HOME}/myproject/folder_with_tests"' >> $BASH_ENV

Или укажите правильные пути вручную, добавьте папку проекта и папку с manage.py и папку с тестами

environment:
  PYTHONPATH: /root/myproject/:/root/myproject/folder_with_manage.py/:/root/myproject/folder_with_tests/

Чтобы проверить, что это работает, вы можете сделать

- run: echo $PYTHONPATH

или

- run: python -c "import sys; print(sys.path)"

Если вы используете изображение без bash, не забудьте сделать https://circleci.com/docs/2.0/env-vars/#setting-an-environment-variable-in-a-shell-command

source $BASH_ENV
# run tests
...