15

gitリポジトリがあり、jenkinsにクローンを作成して実行させたい

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

jenkinsからのコンソール出力は次のとおりです。

+ 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

これを回避する方法はありますか?また、jenkinsユーザーとしてターミナルでpip install -r require.txtを実行する場合、sudo権限は必要ありません。jenkins(プロセス)をjenkinsユーザーとして実行することはできますか?

4

4 に答える 4

29

実行するためにusesudoを実行する必要があるという事実pipは、仮想環境が機能していないことを示す大きな警告です。ビルド出力はpip、システムのsite-packagesディレクトリに要件をインストールしていることを示しています。これはvirtualenvの動作方法ではありません。

ビルドスクリプトは、アクティブ化された仮想環境を実際には保持しません。アクティブ化スクリプトによって設定された環境変数は、子bashプロセスで設定され、ビルドスクリプトまで伝播されません。activate別のシェルを実行する代わりに、スクリプトを入手する必要があります。

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

これを1つのビルドステップとして実行している場合は、機能するはずです(そして、パッケージをvenvにインストールします)。さらにステップを追加する場合は、他のステップでPATH環境変数を設定する必要があります。システムパッケージのインストールに依存しないようにするためにpip、フルパスを提供する方がよいでしょう。python

于 2013-02-11T18:40:28.737 に答える
3

使ってみてください

stage('test') {
     agent {
          docker {
               image 'qnib/pytest'
          }
     }
     steps {
          sh 'virtualenv venv && . venv/bin/activate && pip install -r requirements.txt && python tests.py'
     }
}
于 2020-04-21T13:28:21.740 に答える
1

私は言われたことに完全に同意します....しかし、これをもっと「ジェンキンス」にするために

基本的なプロジェクトを作成します-カスタムステップで次のようにします

PROJECT="Tree"


rm -Rf ~/Builds/$PROJECT
CODE_HOME=~/Builds/$PROJECT/code
PYENV_HOME=~/Builds/$PROJECT/python
export PYENV_HOME
export PYTHONPATH=""
echo "Creating new Python env"
/usr/local/bin/python3 -m venv  --clear $PYENV_HOME
source $PYENV_HOME/bin/activate

echo "Get Project"
mkdir -p $CODE_HOME
cd $CODE_HOME
git clone https://github.com/MyUsername/MyTree.git .

pip install --upgrade pip
pip install nose
pip install coverage
pip install -r requirements.txt
python setup.py build
python setup.py install

この後、鼻のテストなどを行うことができます...

于 2018-04-05T09:53:53.247 に答える
0

JenkinsにWindowsマシンでpipインストール要件を実行させるために私が行ったことは次のとおりです。

「Windowsバッチコマンドの実行」パイプライン

REM activate venv, update pip and install package
cmd /k "cd <path to your directory like C:\WebAPI> & .\venv\Scripts\activate.bat & python -m pip install -U pip & pip install -r .\requirements.txt"

cmd /kWindowsコマンドプロンプトを実行し、そこに任意のコマンドを追加できます。&パイプラインオペレーターです。だからあなたは複数のコマンドを持つことができます

于 2019-04-10T11:50:59.287 に答える