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/co
You should install nodepy
as part of your testing procedure. Jenkins and other test-driven development tools need to be able to update your installed code whenever it changes (as well as verify that your install procedure is working correctly), and the right way to do this is with either a .pth
link or by installing it after checkout. If you want to simply use the checked-out repository from github, you can insert the following shell command from the workspace
directory:
pip install -e ./nodepy
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
It turns out all I needed to do was follow the answer to this question in order to have Jenkins clone my repo into a subdirectory workspace/nodepy/
. Since Jenkins runs the build in workspace
, it then finds the package.
When I first did this, it somehow created an infinite recursion of nodepy/nodepy/nodepy/... directories. After I cleared out the workspace, this problem went away.