I am using Jenkins to test a Python module nodepy
that I develop. However, I get errors like the following:
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
How do I set the PYTHONPATH in Jenkins (so that my module is importable)?
I'm not even sure which directory I should add. It seems that Jenkins puts things in jenkins/jobs/nodepy/workspace/, so the directory doesn't even have the right name for python to find it.
EDIT:
The python module nodepy
is a git
repository that I have configured my jenkins job to watch and checkout.
Manage Jenkins
, then System Configuration
)sys.path.append
within your script.e.g.
import sys
import os
# jenkins exposes the workspace directory through env.
sys.path.append(os.environ['WORKSPACE'])
import nodepy
or, in your jenkins build configuration, configure the build step with (if it is a shell script one):
export PYTHONPATH=$WORKSPACE:$PYTHONPATH
Package issue
/var/lib/jenkins/jobs/NodePy/workspace/convergence.py
this is a problem, because there is no nodepy
directory. so even if you put the correct syspath, your package structure will not be right. what you can do is change how your workspace looks like, from:
/var/lib/jenkins/jobs/NodePy/workspace/convergence.py
/var/lib/jenkins/jobs/NodePy/workspace/ivp.py
/var/lib/jenkins/jobs/NodePy/workspace/rk.py
to
/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: Extracting files in correct subdirectory
Your workspace is going to be
/var/lib/jenkins/jobs/NodePy/workspace/
You don't need to change the workspace directory, it is keyed from your job name (NodePy
) and your jenkins configuration, you just need to create the nodepy
directory in the workspace, and have your files go there. You can either change your jenkins job configuration and have it checkout the git
repo nodepy
in the correct subdirectory or you can move the files yourself:
mkdir .nodepy
# .nodepy is hidden, * doesn't capture hidden files.
mv * .nodepy
mv .nodepy nodepy
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With