Jenkins, Python и root

Я пытаюсь запустить Python unittest как часть сборки Jenkins. Моя сборка терпит неудачу следующим образом:

+ export PYTHONPATH=/usr/lib/python2.7:/usr/lib/python2.7/dist-packages:/var/lib/jenkins/jobs/GUPS_Unit_Tests/workspace/python/plugins:/var/lib/jenkins/jobs/GUPS_Unit_Tests/workspace/:/usr/share/qgis/python:/usr/share/qgis/python/plugins:/var/lib/jenkins/.qgis2/python/plugins:/var/lib/jenkins/jobs/GUPS_Unit_Tests/workspace/gupsutest
+ export PYTHONHOME=/usr
+ cd gupsutest
+ python -m unittest discover
ImportError: No module named site

Как оказалось, это проблема с правами доступа к файлам. Python установлен в /usr/lib/python2.7, который, конечно же, принадлежит root.

-rwxrwxr--   1 root root  20388 Jun 22  2015 site.py
-rwxrwxr--   1 root root  19727 Feb  2 07:45 site.pyc

Я могу запустить Python, если добавлю пользователя jenkins в группу root. Это кажется опасным в худшем случае и плохой формой в лучшем.

Как мне поступить? Переустановить Python в /usr/local/lib? Изменить группу для Python в /usr/lib? Разрешить ли мне весь доступ к /usr/lib/python2.7?

Я использую Ubuntu 14.04 с Python 2.7.6. Еще кое-что, что следует учесть: код Python, который мы пишем, предназначен для плагинов QGIS. Они также были установлены от имени root. Должен ли я изменить группу и для них?

EDIT: Дополнительная информация. Пользователь jenkins настроен как учетная запись системного пользователя. Похоже, это способствует возникновению проблемы. У меня есть обычная учетная запись gups, которая может запускать Python (и поэтому имеет доступ к /usr/lib/python2.7).

/etc/group

jenkins:x:125:
gups:x:1000:

/etc/passwd

jenkins:x:116:125:Jenkins,,,:/var/lib/jenkins:/bin/bash
gups:x:1000:1000:GUPS Buildmaster,,,:/home/gups:/bin/bash

EDIT2: Интересная разница между разрешениями папок python. Не уверен, почему python3.4 и python2.7 отличаются.

gups@gups-xxxxxxxxxx:~$ ls -la /usr/lib | grep python
-rw-r--r--   1 root root        68232 Jan 16 20:42 libqgispython.so.2.8.6
drwxrwxr--  26 root root        12288 Feb 12 08:03 python2.7
drwxr-xr-x   3 root root         4096 Feb 23  2014 python3
drwxr-xr-x  33 root root        20480 Feb  4 05:16 python3.4
drwxr-xr-x   2 root root         4096 Feb  3 08:02 python-tz

EDIT3: Я изучил virtualenv, который кажется подходящим решением. Я запустил virtualenv для создания среды в домашнем каталоге пользователя jeknins.

sudo virtualenv --system-site-packages /var/lib/jenkins/_python

Это не включает /usr/lib/python2.7/dist-packages, что является проблемой.

EDIT4: Информация о пакете Jenkins.

gups@gups-Satellite-U925t:~$ sudo dpkg -l | grep jenkins
ii  jenkins                                               1.650                                               all          continuous integration system

0
25.11.2018, 00:51
0 ответов

Теги

Похожие вопросы