Net なプロジェクトでも jenkins を使ってみた
-
Upload
oda-shinsuke -
Category
Technology
-
view
9.536 -
download
4
Transcript of Net なプロジェクトでも jenkins を使ってみた
.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 サーバーが無くても自動化出来ます