Jenkinsfile et Python virtualenv

J'essaye de configurer un projet qui utilise le nouveau brillant Jenkins pipelines, plus précisément un multibranch projet.

J'ai un Jenkinsfile créé dans un test de la branche comme ci-dessous:

node {
    stage 'Preparing VirtualEnv'
    if (!fileExists('.env')){
        echo 'Creating virtualenv ...'
        sh 'virtualenv --no-site-packages .env'
    }
    sh '. .env/bin/activate'
    sh 'ls -all'
    if (fileExists('requirements/preinstall.txt')){
        sh 'pip install -r requirements/preinstall.txt'
    }
    sh 'pip install -r requirements/test.txt'
    stage 'Unittests'
    sh './manage.py test --noinput'
}

Il est intéressant de noter que preinstall.txt sera mise à jour pip

Je suis d'erreur comme ci-dessous:

OSError: [Errno 13] Permission denied: '/usr/local/lib/python2.7/dist-packages/pip'

Dirait qu'il essaie de mettre à jour pip mondiale env au lieu de l'intérieur de virtualenv, et ressemble à chaque sh étape est sur son propre contexte, comment puis-je les faire exécuter, dans le même contexte?

  • activate s'applique uniquement à la coquille instace il est exécuté en, dans votre cas, seule ligne. Essayez d'exécuter le pip dans le venv avec chemin d'accès complet et manage.py avec (chemin complet) python.
InformationsquelleAutor James Lin | 2016-11-28