Skip to content

Jenkinsでテストを毎日実行する

Nozomi Ito edited this page Oct 10, 2018 · 16 revisions

テストができたら毎日実行するように設定しましょう。そうすることで、開発期間中に発生した問題をすばやく検出できます。毎日と言わずソースコードに変更が入るたびに実行しても良いのですが、最初のステップとしてまずは1日1回テストを実行してみましょう。

ここでは、CI(継続的インテグレーション)ツールJenkinsを使って、テストを定期的に実行する方法を説明します。Magic Podのテストの実行にはMac PCが必要なので、今回はMac PC上に手軽にJenkinsをセットアップして試す方法を説明します。

セットアップ

  • こちらの手順に従い、Java8をインストールします。
  • 続いて、Jenkinsをインストールして使ってみようの記事に従い、JenkinsをMac PC上にセットアップします。
    • 記事の内容に従い、「管理者パスワードの入力」「推奨プラグインのインストール」「初期ユーザー登録」を行ってください。図1の画面が表示されます。
    • さらに、同じ記事の「実行してみよう」のセクションに従い、「Jobの登録」と「Jobの実行」を行ってみてください。Jobが成功すれば、セットアップは完了です(図2)。

Jenkinsの起動画面

図1 Jenkinsの起動画面

Jobの成功画面

図2 Jobの成功画面

Magic Podテスト実行Jobの作成

セットアップが完了したら、いよいよテスト実行のJobを作成してみましょう。

Jobの作成

まずは、先ほどと同様、適当な名前で「フリースタイル」のJobを作成します。

Magic Pod Desktopのセットアップ

Jenkinsと同じMac PCにMagic Pod Desktopを配置し、右クリックして「開く」から起動します。起動したら、認証情報を入力してログインしておきます(いったんログインすればPCに認証情報が保存されるので、次回からはログインの作業は不要です)。

作業が完了したら、Magic Pod Desktopを終了します。起動したままにすると、テストの実行が失敗してしまいます。

設定ファイルの編集

こちらに従い、テスト実行に必要な設定ファイルmagic_pod_config.jsonを編集します。この際に、「xmlTestOutput」の値をtrueにします。これで、テスト結果が、Jenkinsが読み込むためのXMLファイルとして作業ディレクトリに出力されます。

ビルド手順「シェルの実行」の追加

作成したJobの「設定」をクリックして設定画面に移動し、「ビルド手順の追加」から「シェルの実行」を選択して追加します(図3)。

追加したら、「シェルスクリプト」の欄に"<Magic Pod Desktop.app へのパス>/Contents/MacOS/Magic Pod Desktop" run --magic_pod_config=<magic_pod_config.jsonへのパス>のようにスクリプトを記述します(図4)。

「シェルの実行」の追加

図3 「シェルの実行」の追加

「シェルスクリプト」の設定

図4 「シェルスクリプト」の設定

ビルド後の処理「JUnitテスト結果の集計」の追加

同様に、 「ビルド後の処理」から「JUnitテスト結果の集計」を選んで追加し、図5のように「テスト結果XML」にmagic-pod-work/*.xmlと記述します(workDirを別の場所にしている場合は、その場所に応じたパスを指定してください)。

「JUnitテスト結果の集計」の設定

図5 「JUnitテスト結果の集計」の設定

JOBの実行

設定を保存し、JOBを実行してみてください。JOBが完了すると、結果画面にテストごとの結果へのリンクが作成されます(図6)。

テスト結果へのリンク

図6 テスト結果へのリンク

テスト結果のメール・チャット通知

テストの実行結果は、メールやSlackなどのチャットで通知することができます。

メール通知を行うには、Jenkinsでビルドが失敗したらGmailに通知する方法の手順に従い、「メールサーバの設定」と「ジョブ側の設定」を行ってください。これで、テスト失敗時にメールが送信されるようになります。

Slackへの通知を行うには、Jenkinsのビルド結果をSlackに通知させるの手順に従いSlackとJenkinsの設定を行ってください。

テストを定期的に実行する

テストを定期的に実行するには、Jenkinsでジョブを定期的に実行するの設定を行ってください。

例えば毎日12時頃にテストを実行したいなら、「スケジュール」にH 12 * * *と記載すれば良いでしょう。

さらなる改善

ここで紹介した設定は、ごく基本的なものです。本格的な運用にあたっては、以下のようなさらなる改善が考えられます。

  • Jenkinsサーバに固定IPを割り当てて、社内の誰でも見られるように
  • Jenkinsの「拡張E-mail通知」の機能を使い、さらにメール送信の方法を細かく指定
You can’t perform that action at this time.