Comment créer un Python virtualenv dans Jenkins?

Je suis à l'aide d'un Makefile afin d'assurer l'uniformité de simples commandes pour la création d'un virtualenv, l'exécution de tests, etc. J'ai configuré mon Jenkins instance de tirer à partir d'un mercurial repo et puis "faire virtualenv", qui fait ceci:

virtualenv --python=/usr/bin/python2.7 --no-site-packages . && . ./bin/activate && pip install -r requirements.txt

Mais pour une raison quelconque, il insiste sur l'utilisation du système installé pip et d'essayer d'installer mon paquet de dépendances dans le système de site-packages plutôt que de le virtualenv:

error: could not create '/usr/local/lib/python2.7/dist-packages/flask': Permission denied

Si j'ajoute un peu de débogage commandes et explicitement point de la pip dans mon virtualenv, les choses deviennent encore plus de confusion:

virtualenv --python=/usr/bin/python2.7 --no-site-packages . && . ./bin/activate && ls -l bin && which pip && pwd && ./bin/pip install -r requirements.txt

Qui génère la sortie suivante:

New python executable in ./bin/python2.7
Not overwriting existing python script ./bin/python (you must use ./bin/python2.7)
Installing setuptools, pip...done.
Running virtualenv with interpreter /usr/bin/python2.7

Il semble Jenkins ne pas reconstruire l'environnement à partir de zéro pour chaque build, ce qui me semble une drôle de choix, mais ne devrait pas l'effet de mon problème immédiat

De la sortie de ls-l bin" montre pip pour être installé dans le virtualenv et exécutable:

-rw-r--r-- 1 jenkins jenkins    2248 Apr  9 21:14 activate
-rw-r--r-- 1 jenkins jenkins    1304 Apr  9 21:14 activate.csh
-rw-r--r-- 1 jenkins jenkins    2517 Apr  9 21:14 activate.fish
-rw-r--r-- 1 jenkins jenkins    1129 Apr  9 21:14 activate_this.py
-rwxr-xr-x 1 jenkins jenkins     278 Apr  9 21:14 easy_install
-rwxr-xr-x 1 jenkins jenkins     278 Apr  9 21:14 easy_install-2.7
-rwxr-xr-x 1 jenkins jenkins     250 Apr  9 21:14 pip
-rwxr-xr-x 1 jenkins jenkins     250 Apr  9 21:14 pip2
-rwxr-xr-x 1 jenkins jenkins     250 Apr  9 21:14 pip2.7
lrwxrwxrwx 1 jenkins jenkins       9 Apr 10 19:31 python -> python2.7
lrwxrwxrwx 1 jenkins jenkins       9 Apr 10 19:31 python2 -> python2.7
-rwxr-xr-x 1 jenkins jenkins 3349512 Apr 10 19:31 python2.7

La sortie de "qui pip" semble vouloir utiliser le bon:

/var/lib/jenkins/jobs/Run Tests/workspace/bin/pip

Mon répertoire de travail actuel est ce que j'attends:

/var/lib/jenkins/jobs/Run Tests/workspace

Mais... wtf?

/bin/sh: 1: ./bin/pip: Permission denied
make: *** [virtualenv] Error 126
Build step 'Execute shell' marked build as failure
Finished: FAILURE

OriginalL'auteur Kenneth D. | 2015-04-10