Jenkins、Python、ルート

Jenkins、Python、ルート

Jenkinsビルドの一部としてPythonユニットテストを実行しようとしています。私のビルドは次のように失敗します。

+ 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にインストールされ、もちろんルートが所有しています。

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

jenkins ユーザーを root グループに追加すると、Python を実行できます。これは最悪の場合は危険に見え、せいぜい恐ろしいようです。

どうやって進めますか? /usr/local/libにPythonを再インストールする必要がありますか? /usr/libでPythonグループを変更する必要がありますか? /usr/lib/python2.7へのすべてのアクセスを許可しますか?

私はUbuntu 14.04とPython 2.7.6を使用しています。考慮すべきもう一つのことは、私たちが書いているPythonコードがQGISプラグイン用であるということです。これらはルートとしてもインストールされます。これもグループを変更する必要がありますか?

編集:追加情報。 jenkinsユーザーはシステムユーザーアカウントに設定されます。これにより問題がさらに悪化するようです。私はPythonを実行できる一般的なアカウントgupsを持っています(したがって/usr/lib/python2.7にアクセスできます)。

/etc/グループ

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

/etc/パスワード

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:研究中です。仮想環境これが適切な解決策のようです。 jekninsユーザーのホームディレクトリに環境を作成するためにvirtualenvを実行します。

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

これには問題となる/usr/lib/python2.7/dist-packagesは含まれません。

編集4:Jenkinsパッケージ情報。

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

ベストアンサー1

いくつかの追加検索と投稿の助けを借りてUbuntuフォーラム、解決策を見つけました。

図からわかるようにトリガーそして破力ミサ、私のpython2.7フォルダの権限は実際にファンキーです。

私はこれをこうして修正した。

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 {} \;

私はそれをその中で見つけました。このスタック交換郵便はがき。

おすすめ記事