Jenkins, Python e raiz

0

Estou tentando executar o teste unitário do Python como parte de uma compilação do Jenkins. Minha compilação estava falhando da seguinte forma:

+ 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

Como se constata, esse é um problema de permissão de arquivo. O Python é instalado em /usr/lib/python2.7, que obviamente é de propriedade do root.

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

Eu posso executar o Python se eu adicionar o usuário jenkins ao grupo raiz. Isso parece perigoso na pior e má forma na melhor das hipóteses.

Como posso proceder? Eu reinstalei o Python em / usr / local / lib? Eu mudo o grupo para Python em / usr / lib? Permitir acesso a /usr/lib/python2.7?

Estou usando o Ubuntu 14.04 com o Python 2.7.6. Outra coisa a considerar, o código Python que estamos escrevendo é para plugins QGIS. Estes também foram instalados como root. Devo alterar o grupo para esses também?

EDIT: mais informações. O usuário jenkins é configurado como uma conta de usuário do sistema. Isso parece estar contribuindo para o problema. Eu tenho um grupo de contas normal que é capaz de executar o Python (e, portanto, tem acesso ao /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: Diferença interessante entre permissões de pasta python. Não tenho certeza porque python3.4 e python2.7 são diferentes.

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: Eu tenho procurado em virtualenv que parece ser uma solução apropriada. Eu rodei virtualenv para criar um ambiente no diretório home do meu usuário jeknins.

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

Isso não inclui /usr/lib/python2.7/dist-packages, o que é um problema.

EDIT4: Informações do pacote Jenkins.

gups@gups-Satellite-U925t:~$ sudo dpkg -l | grep jenkins
ii  jenkins                                               1.650                                               all          continuous integration system
    
por siliconsmiley 29.02.2016 / 20:12

1 resposta

0

Após algumas pesquisas adicionais e alguma ajuda de uma postagem nos fóruns do Ubuntu , descobri a solução.

Conforme indicado por thrig e Faheem Mitha , as permissões na minha pasta python2.7 eram de fato funky.

Eu corrigi-los assim.

sudo chmod 755 /usr/lib/python2.7
sudo find /usr/lib/python2.7 -type d -exec chmod 755 {} \;
sudo find /usr/lib/python2.7/*.py -exec chmod 644 {} \;

Que encontrei em este stackexchange postar.

    
por 02.03.2016 / 21:29