.NETなプロジェクトでも Jenkins を使ってみた第1回大阪Jenkins勉強会2011/09/22 お だ
織田 信亮 (おだ しんすけ)開発者してますSQLWorld代表http://d.hatena.ne.jp/odashinsuke/@shinsukeoda
注意書き2~3年前のお話しです当時は Hudson でした
今日お話しする内容Jenkins / CI体験談今 .NET のプロジェクトで使うなら
Jenkins って何?CI(Continuous Integration)サーバーContinuous Integration って何?堅苦しい定義は色々あると思いますが…短い間隔で繰り返しビルドする!
CI すると何が嬉しい?ビルドの自動化!最新ソースを取得するとビルドが通らない朝一最新取ったら、エラーになる orzリリース準備でも開発端末依存している~さんの端末でビルドしないとダメ!ユニットテストがあると…テストの自動化/結果レポート定期的なテストの実行により、コードが守られる
CI すると何が嬉しい?ビルドの自動化!最新ソースを取得するとビルドが通らない朝一最新取ったら、エラーになる orzリリース準備でも開発端末依存している~さんの端末でビルドしないとダメ!ユニットテストがあると…テストの自動化/結果レポート定期的なテストの実行により、コードが守られる
.NET で CI するには…TFS (Team Foundation Server)ソース管理、CI、プロジェクト管理、レポート、テスト管理 等 盛り沢山!有償 (最新版は大幅値下げも CAL は必要)CCNET (CruiseControl.NET)http://www.cruisecontrolnet.org/projects/ccnet無償で使える OSS の CI設定が .xml ベースで大変…(v1.4当時)
Jenkins は?無償すぐ使える設定が GUI ベースで使いやすいGUI さいこー!
今日お話しする内容Jenkins / CI体験談今 .NET のプロジェクトで使うなら
.NET の開発環境Visual Studio を中心に色々利用していましたユニットテスト/カバレッジ/コード解析…でもお高いんでしょ?
.NET のお手軽(無償)開発環境の例IDEVisual Studio (Express Edition)ユニットテストNUnit/MolesカバレッジPartCoverコード解析FxCop (最近は Windows SDK に同梱)
Jenkins サーバーへの事前準備必要なコンポーネントのインストール.NET Framework利用している 3rd コンポーネントライセンスは要確認!端末単位なのか開発者単位なのか?その他依存しているコンポーネントSilverlight SDK とかテスト/レポート等に使うコンポーネントNUnit/PartCover/FxCop … etc
プロジェクトの構成ビルドMSBuild (Visual Studio)ユニットテストNUnitカバレッジPartCoverコード解析無し
どの プラグイン を使ってた?ビルドMSBuild PluginテストNUnit PluginカバレッジHTML Publisher Plugin
当時困ったこと (NUnit編)プラグインが パラメタライズドテスト に対応していなかったレポートに デスクリプション を表示してくれないJUnitには無いからかな?
当時困ったこと (PartCover編)プラグインが無い!結果ファイル(.xml) を自前で HTML に変換し、HTML Publisher Plugin で表示
当時困ったこと (Silverlight のテスト)Silverlight 2 の頃ですTestRunnerが貧弱!.html ファイルをブラウザで開くと、テストが動きだし、ブラウザに結果を表示する形式PowerShell で IE 立ち上げて、テストが終わるまで待機。その後結果の部分だけ抽出し、別の HTML ファイルに保存
Silverlight のテスト.html のイメージ
Silverlight のテスト.html のイメージ
今日お話しする内容Jenkins / CI体験談今 .NET のプロジェクトで使うなら
NUnitプラグインパラメタライズドテスト に対応しているリリースノートにそれっぽい事が書いてるデスクリプション を表示してくれないこれは対応していない
PartCoverプラグイン相変わらず無いです結果ファイルを Emma プラグインが 読める形式に変換して、Emma プラグインで表示するのが良いのかも。MSTest(Visual Studio 付属) のカバレッジツールもそういう風に対応している
Violations プラグインFxCopの結果を表示出来ますFxCopは Visual Studio が無くても使えます!
Silverlight のテストStatLightという便利な TestRunnerが出てきましたテスト結果が、.xml で出力されます!http://statlight.codeplex.com/Jenkins でも動くそうですhttp://nosuchblogger.com/post/146/silverlight-unit-test-applications-and-ci
選ばれし者の場合…お高い MSDN 持ってるぜーな方は…Jenkins サーバーに VS を突っ込むと色々と楽出来るかも…MSTestカバレッジ や FxCopもコマンド要らずMSTestプラグインPex & Moles も使えるんじゃね?Emma プラグインMSTestカバレッジ結果を出すViolations プラグインFxCopの結果表示
今日お話しする内容Jenkins / CI体験談今 .NET のプロジェクトで使うならおまけ
CUI さいこー自動化するためには、GUI ベースだと中々難しいGUI ベースで設定ファイルが作成出来る かつ CUI で実行出来るツールが便利!PartCover、FxCop 、Sandcastle Help File Builder はそういった使い方が出来ます
MSBuildファイル(.proj)を別に用意するJenkins で テストやカバレッジ、コード解析のコマンドを叩く設定を書いてると、Jenkins が無いと何も出来なくなる!CI サーバーに依存している状態!コミットしないと何もわからない!
MSBuildファイル(.proj)を別に用意するレポート用やリリース用等、別途 MSBuildファイルを作成しておくと便利リポジトリから最新取って、タグつけて、ビルド、テスト、納品物の圧縮 等も、MSBuildにまとめて記述出来たりします
まとめ.NET のプロジェクトでも十分使えますTFS を使っている方は無理に乗り換えなくても良いですGUI / CUI 両方使えるツールがさいこーMSBuildは自動化の第一歩CI サーバーが無くても自動化出来ます

Net なプロジェクトでも jenkins を使ってみた