Дженкинс: добавив мой модуль Python на PYTHONPATH

Я использую Jenkins для тестирования nodepy модуля nodepy который я разрабатываю. Однако я получаю такие ошибки, как:

 File "/var/lib/jenkins/jobs/NodePy/workspace/convergence.py", line 6, in workspace.convergence Failed example: from nodepy import rk, convergence, ivp Exception raised: Traceback (most recent call last): File "/usr/lib/python2.7/doctest.py", line 1289, in __run compileflags, 1) in test.globs File "<doctest workspace.convergence[0]>", line 1, in <module> from nodepy import rk, convergence, ivp ImportError: No module named nodepy 

Как установить PYTHONPATH в Jenkins (чтобы мой модуль был импортирован)?

Я даже не уверен, какой каталог я должен добавить. Кажется, что Jenkins вкладывает вещи в jenkins / jobs / nodepy / workspace /, поэтому в каталоге нет правильного имени для поиска python.

РЕДАКТИРОВАТЬ:

Модуль python nodepy – это репозиторий git который я настроил для работы с jenkins для просмотра и проверки.

3 Solutions collect form web for “Дженкинс: добавив мой модуль Python на PYTHONPATH”

  • либо добавьте его в свой параметризованный список параметров задания (и заполните его или укажите значение по умолчанию)
  • или если у вас есть доступ администратора к jenkins, вы можете добавить его к системным переменным (перейдите в « Manage Jenkins , затем « System Configuration )
  • или используйте sys.path.append в вашем скрипте.

например

 import sys import os # jenkins exposes the workspace directory through env. sys.path.append(os.environ['WORKSPACE']) import nodepy 

или, в конфигурации сборки jenkins, настройте шаг сборки с помощью (если это сценарий оболочки):

 export PYTHONPATH=$WORKSPACE:$PYTHONPATH 

Проблема с пакетом

 /var/lib/jenkins/jobs/NodePy/workspace/convergence.py 

это проблема, потому что нет nodepy . поэтому даже если вы установите правильный syspath, ваша структура пакета будет неправильной. то, что вы можете сделать, это изменить то, как выглядит ваше рабочее пространство, начиная с:

 /var/lib/jenkins/jobs/NodePy/workspace/convergence.py /var/lib/jenkins/jobs/NodePy/workspace/ivp.py /var/lib/jenkins/jobs/NodePy/workspace/rk.py 

в

 /var/lib/jenkins/jobs/NodePy/workspace/nodepy/__init__.py /var/lib/jenkins/jobs/NodePy/workspace/nodepy/convergence.py /var/lib/jenkins/jobs/NodePy/workspace/nodepy/ivp.py /var/lib/jenkins/jobs/NodePy/workspace/nodepy/rk.py 

EDIT: извлечение файлов в правильном подкаталоге

Ваше рабочее пространство будет

 /var/lib/jenkins/jobs/NodePy/workspace/ 

Вам не нужно менять каталог рабочей области, он зависит от вашего имени задания ( NodePy ) и конфигурации вашего jenkins, вам просто нужно создать каталог nodepy в рабочей области, и ваши файлы туда отправятся. Вы можете либо изменить конфигурацию задания jenkins, либо nodepy в правильной поддиректории, либо сами перемещать файлы:

 mkdir .nodepy # .nodepy is hidden, * doesn't capture hidden files. mv * .nodepy mv .nodepy nodepy 

Вы должны установить nodepy как часть вашей процедуры тестирования. Дженкинс и другие тестовые инструменты разработки должны иметь возможность обновлять свой установленный код всякий раз, когда он изменяется (а также проверять правильность работы вашей процедуры установки), и правильный способ сделать это – либо с .pth ссылкой, либо с помощью установка после покупки. Если вы хотите просто использовать выгруженный репозиторий из github, вы можете вставить следующую команду оболочки из каталога workspace :

 pip install -e ./nodepy 

Оказывается, все, что мне нужно было сделать, это следовать ответу на этот вопрос , чтобы Jenkins клонировал мое репо в workspace/nodepy/ подкаталога workspace/nodepy/ . Поскольку Jenkins запускает сборку в workspace , она находит пакет.

Когда я впервые это сделал, он каким-то образом создал бесконечную рекурсию каталогов nodepy / nodepy / nodepy / …. После того, как я очистил рабочее пространство, эта проблема исчезла.

Python - лучший язык программирования в мире.