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 {} \;
私はそれをその中で見つけました。このスタック交換郵便はがき。