2019/11/26 Winds Chord Blogに移行しました。
JenkinsでToxとPytestを使って、テストを実行するまでの設定。
まず、Jenknsがインストールされているサーバに下記をインストールします。
本当は、Virtualenvを使うのが良いのですが、Jenkinsの設定が面倒なので、そのまま入れます。。。。(あんまり良くないよね。。。。。)
1. Tox.iniを準備
試験したいプロジェクトにTox.iniファイルを作成します。
今回は、Python2.7と3.4で、PytestとPEP8確認とカバレッジを実行します。(ちなみに、試験で使うPythonはインストールされてないとダメです。なので、Python2,7と3.4はJenkinsサーバにインストール済みです。)
プロジェクトのdirectory構成はこんな感じ。
├── LICENSE
├── application
│ ├── Calculation.py
│ ├── __init__.py
├── setup.py
├── test
│ ├── test_Calculation.py
└── tox.ini
Tox.ini
JenkinsでToxとPytestを使って、テストを実行するまでの設定。
まず、Jenknsがインストールされているサーバに下記をインストールします。
本当は、Virtualenvを使うのが良いのですが、Jenkinsの設定が面倒なので、そのまま入れます。。。。(あんまり良くないよね。。。。。)
1. Tox.iniを準備
試験したいプロジェクトにTox.iniファイルを作成します。
今回は、Python2.7と3.4で、PytestとPEP8確認とカバレッジを実行します。(ちなみに、試験で使うPythonはインストールされてないとダメです。なので、Python2,7と3.4はJenkinsサーバにインストール済みです。)
プロジェクトのdirectory構成はこんな感じ。
├── LICENSE
├── application
│ ├── Calculation.py
│ ├── __init__.py
├── setup.py
├── test
│ ├── test_Calculation.py
└── tox.ini
Tox.ini
[tox] envlist = py27, py34 [pytest] pep8maxlinelength = 120 [testenv:py27] basepython = /usr/local/python27/bin/python2.7 [testenv:py34] basepython = /usr/local/python34/bin/python3.4 [testenv] deps = pytest pytest-cov pytest-pep8 blinker Flask itsdangerous Jinja2 MarkupSafe raven requests six Werkzeug commands = py.test \ --pep8 \ --cov application \ --cov-report xml \ --junitxml=junit-{envname}.xml \ test
2. setup.pyを準備
Toxにはsetup.pyが必ず必要らしいので、簡易的な物を作成します。
# -*- coding:utf-8 -*- from distutils.core import setup setup(name='application name', version='0.0.1', description='application description', author='auth user name', author_email='email@localhost.localhost', )
3. JenkinsサーバにToxをインストール$ sudo pip install toxずらずらと・・・$ sudo -u jenkins python -c "import tox; print tox.__version__"今回は「1.9.0」がインストールされた様です。
4. jenkinsに「shiningpanda」「Cobertura Plugin」プラグインをインストール
・「shiningpanda」は、JenkinsでPythonを実行するためのプラグインです。
・「Cobertura Plugin」はカバレッジ集計用のプラグインです。
「Jenkinsの管理」→「プラグインマネージャ」→「利用可能」タブに進んで、「ShiningPanda Plugin」「Cobertura Plugin」にチェックを入れてインストールします。
5. JenkinsにPythonの設定
今回は、Python2.7とPython3.4を設定します。
「Jenkinsの管理」→「システムの設定」のなかに「Python」という項目があると思います。
「Python追加」から必要な分だけPythonの設定を入れて、保存。
各項目の設定
・Name: Jenkinsで識別するための名前(何でもよさそう)
・Home or executable: Pythonの実行パス。「which python」等で確認して設定。
6. Jobの作成
「新規ジョブ作成」から「マルチ構成プロジェクトのビルド」を選択して、OK。
プロジェクト名はお好きな物を。
7. Jobの設定
6. で新規にジョブを作成した場合は、設定画面に遷移しているはずなので。(遷移していない人は、プロジェクト名を選択して、「設定」を押してください。)
設定画面の下の方にある項目を設定してきます。それ以外の項目は、GithubにコミットしたタイミングでJobを走らせたい場合は設定してください(ここでは割愛)。
次の3カ所を設定して、保存する。
・マトリックスの設定
「軸の追加」→「Tox」を選択して、「py27」にチェック。「py34」にもチェックしたいが項目がない。。。
仕方が無いので、「高度な設定」→「py34」と入力。
・ビルド
「ビルド手順の追加」→「Tox Bulider」を選択し、「Configuration file」に「tox.ini」(デフォルトだった)になっていることを確認。
・ビルド後の処理
「ビルド後の処理の追加」から次の2つを選択して設定する。
①「Cobertura カバレッジ・レポートの集計」
Cobertura XMLレポート パターン: **/coverage.xml
※Pytestのカバレッジレポートは、「coverage.xml」で出力されるので。
②「JUnitテスト結果の集計」
テスト結果XML: **/junit-*.xml
※tox.iniで設定したファイル名を指定。
8. あとは「ビルド実行」を押すだけ。
参考
http://d.hatena.ne.jp/kuma8/20121124/1353723982
http://tox.readthedocs.org/en/latest/example/jenkins.html
http://shiningpanda.com/tox-on-jenkins-with-shiningpanda-plugin.html
コメント
コメントを投稿