Jenkinsを使ってみる

技術

こんにちは、松田です。

今回はJenkinsを使ってみました。その機能や使い方をご紹介します。

Jenkinsを使ってみる_画像1

 

Jenkinsとは

ソフトウェア開発をサポートする継続的インテグレーション*ツールで、Javaで書かれたWebアプリケーションです。
* 継続的インテグレーション:ソフトウェア開発において、ビルドやテストを頻繁に繰り返し行なうことにより問題を早期に発見し、開発の効率化・省力化や納期の短縮を図る手法。特に、専用のツールを用いてこのプロセスを自動化あるいは半自動化し、効率的に実施する方式。[IT用語辞典 e-Wordsから引用]

 

Jenkinsでできること

Jenkinsはソフトウェア開発時に行う様々な作業を自動化できます。

Jenkinsを使ってみる_画像2

icon-caret-right ビルドの自動化

Jenkinsの最もポピュラーな使い方はビルドの自動化です。
バージョン管理システム(SVNやGit)と連携し、ソースがコミットされたタイミングでビルドが実行されます。

icon-caret-right デプロイの自動化

Jenkinsはビルドしたプログラムを開発サーバや本番サーバにデプロイすることができます。

icon-caret-right テストの自動化

JenkinsはJUnit等のテストフレームワークを使ったテストができます。

icon-caret-right 静的コード解析の自動化

JenkinsはCheckstyle、FindBugs、Step Counter等の静的コード解析ができます。

 

実際にやってみよう

まずはJenkinsのインストールです。JenkinsはWindowsでもLinuxでも動作します。この記事ではCentOS 6.7を例に記述します。

JenkinsはJavaが必要なため、Javaをインストールします。

Jenkinsをインストール・起動します。

起動するとデフォルトでは8080番ポートで立ち上がります。http://サーバのIP:8080/ でアクセスすると以下のようにJenkinsのホーム画面が見えるはずです。

Jenkinsを使ってみる_画像4

 

 icon-check Subversionの用意

Jenkinsはバージョン管理システムと連携しソースのコミットをトリガーとしてビルド等の処理を実行します。

今回はSubversionと連携します。Subversionには以下をコミットしておきます。

Jenkinsを使ってみる_画像3

 

【Tax.java】
【TaxTest.java】

 

Jenkinsでテスト結果等のグラフを表示するにはAntやMaven等のビルドツールから出力されるレポートが必要になるため、build.xmlにJUnit/Checkstyle/FindBugsの処理を記述しておきます。

【build.xml】

 

Antのインストール

前述の通りAntが必要ですのでインストールします。

 

 icon-check ジョブの作成

Jenkinsはジョブという単位で処理が実行されます。それではJenkinsの画面からビルド・テスト・静的コード解析を実行するジョブを作成してみます。

1. 基本設定
  1. 新規ジョブ作成をクリック
  2. 任意のジョブ名を入力
  3. フリースタイル・プロジェクトのビルドにチェック
  4. OKをクリック

Jenkinsを使ってみる_画像5

 

2. ソースコード管理の設定

連携するSubversionの情報を入力します。ローカルモジュールディレクトリはリポジトリからチェックアウトしたファイルが保存されるディレクトリへの相対パスになります。この例では /var/lib/jenkins/jobs/ビルドジョブ/svn に保存されます。

  1. ソースコード管理でSubversionを選択
  2. リポジトリURLを入力
  3. ローカルモジュールディレクトリに./svnを入力

Jenkinsを使ってみる_画像6

 

3. ビルドトリガの設定

ジョブの実行タイミングを設定します。

今回はSubversionへコミットされたタイミングで処理を実行したいので、JenkinsからSubversionへ定期的なポーリングを行ってコミットを検知するよう設定します。
ポーリング間隔はcronと似た書式で設定します。(画像の例は毎分)

  1. SCMでポーリングにチェック
  2. リスケジュールにポーリング間隔を入力

Jenkinsを使ってみる_画像7

 

4. ビルドの設定

ビルド処理にはAnt、Maven、シェルスクリプトが指定できます。今回はAntを選択しbuild.xmlでJavaコードのコンパイル・JUnit・CheckStyle・Findbugsを実行するtargetのallを設定します。

  1. ビルド手順の追加でAntを追加しallを入力

Jenkinsを使ってみる_画像8

 

5. ビルド後の処理の設定

JenkinsはAntによって出力されたJUnitやCheckStyleのレポート(xml)をビルド後に集計してグラフを生成してくれます。

  1. ビルド後の処理の追加でJUnitテスト結果の集計を追加しレポートのパスを入力
  2. Jenkinsを使ってみる_画像9

     

  3. Checkstyle警告の集計を追加しレポートのパスを入力
  4. Jenkinsを使ってみる_画像10

     

  5. FindBugs警告の集計を追加しレポートのパスを入力
  6. Jenkinsを使ってみる_画像11

     

  7. Step Counterを追加しソースのパスを入力
  8. Jenkinsを使ってみる_画像12

 

 icon-check 設定完了

以上で設定は完了です。

Subversionにコミットするとジョブが起動され、Jenkinsサーバにソースがチェックアウトされ、ビルド・JUnitテスト・静的コード解析が実行されます。

 

 icon-check 確認

Subversionにコミットすると以下のようにclassファイルができていることが確認できました。

Jenkinsを使ってみる_画像13

 

Jenkinsの画面ではJUnitテスト結果や静的コード解析の結果がグラフで表示されます。

(今回はあまり変化のないグラフになってしまっています。)

Jenkinsを使ってみる_画像14

グラフをクリックすると結果の詳細も確認できます。

【JUnitテスト結果】

JUnitテスト結果

【Checkstyle結果】

Checkstyle結果

 

【FindBugs結果】

FindBugs結果

【Step Counter結果】

Step Counter結果

 

まとめ

Jenkinsを使うことでソースをコミットするだけでビルド/テスト/静的コード解析が自動で実行され、結果もグラフで確認できました。

ここまで自動化できるとソースをコミットするのが楽しくなりそうです。今回はご紹介しなかったですが、この他にもSeleniumによるUIテスト自動化、JaCoCoによるテストカバレッジレポート取得の自動化、バグトラッキングシステムとの連携など、様々な自動化ができるようです。

 

開発現場でビルドやテストの作業を手動で行っていて手間だと感じている方は、Jenkinsを導入してみてはいかがでしょうか。

 

̃Gg[͂ĂȃubN}[Nɒlj