2013-02-09 168 views
7

我有一个混帐回购协议,并希望得到詹金斯克隆它,然后运行我如何让jenkins运行“pip install”?

virtualenv venv --distribute 
/bin/bash venv/source/activate 
pip install -r requirements.txt 
python tests.py 

从詹金斯的输出控制台:

+ virtualenv venv --distribute 
New python executable in venv/bin/python 
Installing distribute..........................done. 
Installing pip...............done. 
+ /bin/bash venv/bin/activate 
+ pip install -r requirements.txt 
Downloading/unpacking flask (from -r requirements.txt (line 1)) 
    Running setup.py egg_info for package flask 

SNIP 

creating /usr/local/lib/python2.7/dist-packages/flask 

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

---------------------------------------- 
Command /usr/bin/python -c "import setuptools;__file__='/var/lib/jenkins/workspace/infatics-website/build/flask/setup.py';exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --single-version-externally-managed --record /tmp/pip-hkdBAi-record/install-record.txt failed with error code 1 
Storing complete log in /home/jenkins/.pip/pip.log 
Build step 'Execute shell' marked build as failure 
Finished: FAILURE 

我试着命令前加sudo的,但它也不起作用:

+ sudo pip install -r requirements.txt 
sudo: no tty present and no askpass program specified 
Sorry, try again. 
sudo: no tty present and no askpass program specified 
Sorry, try again. 
sudo: no tty present and no askpass program specified 
Sorry, try again. 
sudo: 3 incorrect password attempts 
Build step 'Execute shell' marked build as failure 
Finished: FAILURE 

任何想法如何解决这个问题?当我在终端上运行pip install -r requirements.txt作为jenkins用户时,它不需要sudo权限。我可以让詹金斯(该过程)以詹金斯用户身份运行吗?

回答

20

事实上,您必须运行使用sudo来运行pip是一个很大的警告,表明您的虚拟环境无法正常工作。编译输出显示pip将要求安装在系统site-packages目录中,这不是virtualenv的工作方式。

您的构建脚本实际上并不保留激活的虚拟环境。激活脚本设置的环境变量设置在子级bash进程中,不会传播到构建脚本。你应该源activate脚本的运行,而不是一个单独的外壳:

virtualenv venv --distribute 
. venv/bin/activate 
pip install -r requirements.txt 
python tests.py 

如果您正在运行这是一个构建步骤,应该工作(和VENV安装你的包)。如果您想添加更多步骤,则需要在其他步骤中设置PATH环境变量。您可能最好提供到pippython的完整路径,以确保您不依赖于系统软件包安装。

+2

我推荐使用的virtualenv一个隐藏目录,使测试不是的virtualenv里拿起: ''' 的virtualenv .pythonenv 源.pythonenv /斌/激活 PIP安装-r requirements.txt 蟒蛇测试.py ''' – vpipkt 2016-06-14 13:36:52