Jenkins+Python+unittest
(2020/05/06:追記)こっちを見たほうが良いです。
Jenkinsでpythonのunittestを実行します。
- jenkins: 2.234
Python周りの設定
Python3のインストール
EC2にはデフォルトでPython2系が入っているので3系を入れる。
$ sudo yum update $ sudo yum install python3
venvは使いません。必要になったときにやる。
ShiningPanda Pluginのインストール
- Jenkinsの管理>プラグインの管理より「ShiningPandas Plugin」を検索してインストール。
- Jenkinsの管理>Global Tool ConfigurationよりPython3を追加する。
これでJenkinsでPython3系が使えます。
ジョブの作成
Python3読み込みテスト
Python3を使えるようになっているか確認します。
- フリースタイルプロジェクト>ビルド>ビルド手順の追加>Virtualenv Builderを追加。
- 先程追加したPython3を選択して下記のshellを書く。
python --version
これでジョブを保存してビルドを実行。
ジョブのコンソール出力を確認。
+ python --version Python 3.7.6
OK。認識できてますね。
unittestジョブの作成
さて本題です。ジョブの構成は下記の通り。
- Githubからclone
- unittest実行
これだけ。今後はポーリングやフックスクリプトを起点に実行するつもり。ひとまずはジョブの作成。先程の確認用ジョブを書き換えていきます。
1. Githubからclone
ソースコード管理>gitからリポジトリURLを追加するだけ。
2. unittest実行
Virtualenv Builderのshellを下記の通り変更。
pip install -r requirements.txt python -m unittest
Jenkinsとは関係ないんだけど__init__.py
がディレクトリにないとtestが認識されないんですね。テスト結果の集計をしたいけどもう夜も更けているのでここまでで。
ジョブの実行
失敗しました。環境変数がとれなかったようです。外部APIのテストやるわけじゃないしここもMockにした方がいいのかな?今回はJenkinsの勉強を兼ねてGUIから環境変数を追加してみます。
Jenkinsの管理>システムの設定>グローバルプロパティより環境変数を追加。
再度ジョブを実行します。
+ python -m unittest .... ---------------------------------------------------------------------- Ran 4 tests in 0.134s OK
OK。おやすみ〜