Я пытаюсь настроить проект, в котором используются блестящие новые конвейеры Jenkins, а более конкретно - проект с несколькими вариантами.Jenkinsfile и Python virtualenv
У меня есть Jenkinsfile создан в тестовой ветке, как показано ниже:
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'
}
Стоит отметить, что preinstall.txt обновит пип
я получаю сообщение об ошибке, как показано ниже:
OSError: [Errno 13] Permission denied: '/usr/local/lib/python2.7/dist-packages/pip'
Похоже, что он пытается обновить pip в глобальном env, а не внутри virtualenv, и выглядит как каждый шаг sh
в своем собственном контексте, как заставить их выполнять wit в том же контексте?
'активировать' применяется только к оболочке, в которой он запущен, в вашем случае это одна строка. Попробуйте запустить «pip» в venv с полным путем и 'manage.py' с (полным путем)' python'. –