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

31
.NET ななななななななな Jenkins なななななな な 1 ななな Jenkins ななな 2011/09/22 な な

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

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

.NET なプロジェクトでも Jenkins を使ってみた

第 1 回大阪 Jenkins 勉強会2011/09/22 お だ

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

織田 信亮 ( おだ しんすけ )開発者してますSQLWorld 代表http://d.hatena.ne.jp/odashinsuke/@shinsukeoda

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

注意書き

2~3年前のお話しです当時は Hudson でした

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

今日お話しする内容

Jenkins / CI体験談今 .NET のプロジェクトで使うなら

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

Jenkins って何?

CI(Continuous Integration) サーバーContinuous Integration って何?

堅苦しい定義は色々あると思いますが…

短い間隔で繰り返しビルド する!

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

CI すると何が嬉しい?

ビルドの自動化!最新ソースを取得するとビルドが通らない朝一最新取ったら、エラーになる orz

リリース準備でも開発端末依存している~さんの端末でビルドしないとダメ!

ユニットテストがあると…テストの自動化 / 結果レポート定期的なテストの実行により、コードが守られる

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

CI すると何が嬉しい?

ビルドの自動化!最新ソースを取得するとビルドが通らない朝一最新取ったら、エラーになる orz

リリース準備でも開発端末依存している~さんの端末でビルドしないとダメ!

ユニットテストがあると…テストの自動化 / 結果レポート定期的なテストの実行により、コードが守られる

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

.NET で CI するには…

TFS (Team Foundation Server)ソース管理、 CI 、プロジェクト管理、レポート、テスト管理 等 盛り沢山!有償 ( 最新版は大幅値下げも CAL は必要 )

CCNET (CruiseControl.NET)http://www.cruisecontrolnet.org/projects/ccnet

無償で使える OSS の CI設定が .xml ベースで大変… (v1.4 当時 )

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

Jenkins は?

無償すぐ使える設定が GUI ベースで使いやすい

GUI さいこー!

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

今日お話しする内容

Jenkins / CI体験談今 .NET のプロジェクトで使うなら

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

.NET の開発環境

Visual Studio を中心に色々利用していましたユニットテスト / カバレッジ / コード解析…

でもお高いんでしょ?

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

.NET のお手軽 ( 無償 ) 開発環境の例

IDEVisual Studio (Express Edition)

ユニットテストNUnit/Moles

カバレッジPartCover

コード解析FxCop ( 最近は Windows SDK に同梱 )

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

Jenkins サーバーへの事前準備

必要なコンポーネントのインストール.NET Framework利用している 3rd コンポーネントライセンスは要確認!端末単位なのか開発者単位なのか?

その他依存しているコンポーネントSilverlight SDK とか

テスト / レポート等に使うコンポーネントNUnit/PartCover/FxCop … etc

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

プロジェクトの構成

ビルドMSBuild (Visual Studio)

ユニットテストNUnit

カバレッジPartCover

コード解析無し

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

どの プラグイン を使ってた?

ビルドMSBuild Plugin

テストNUnit Plugin

カバレッジHTML Publisher Plugin

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

当時困ったこと (NUnit 編 )

プラグインが パラメタライズドテスト に対応していなかったレポートに デスクリプション を表示してくれない

JUnit には無いからかな?

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

当時困ったこと (PartCover 編 )

プラグインが無い!結果ファイル (.xml) を自前で HTML に変換し、 HTML Publisher Plugin で表示

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

当時困ったこと (Silverlight のテスト )

Silverlight 2 の頃ですTestRunner が貧弱!

.html ファイルをブラウザで開くと、テストが動きだし、ブラウザに結果を表示する形式PowerShell で IE 立ち上げて、テストが終わるまで待機。その後結果の部分だけ抽出し、別の HTML ファイルに保存

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

Silverlight のテスト .html のイメージ

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

Silverlight のテスト .html のイメージ

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

今日お話しする内容

Jenkins / CI体験談今 .NET のプロジェクトで使うなら

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

NUnit プラグイン

パラメタライズドテスト に対応しているリリースノートにそれっぽい事が書いてる

デスクリプション を表示してくれないこれは対応していない

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

PartCover プラグイン

相変わらず無いです結果ファイルを Emma プラグインが 読める形式に変換して、 Emma プラグインで表示するのが良いのかも。

MSTest(Visual Studio 付属 ) のカバレッジツールもそういう風に対応している

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

Violations プラグイン

FxCop の結果を表示出来ますFxCop は Visual Studio が無くても使えます!

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

Silverlight のテスト

StatLight という便利な TestRunner が出てきました

テスト結果が、 .xml で出力されます!http://statlight.codeplex.com/

Jenkins でも動くそうですhttp://nosuchblogger.com/post/146/silverlight-unit-test-applications-and-ci

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

選ばれし者の場合…

お高い MSDN 持ってるぜーな方は…Jenkins サーバーに VS を突っ込むと色々と楽出来るかも…MSTest カバレッジ や FxCop もコマンド要らず

MSTest プラグインPex & Moles も使えるんじゃね?

Emma プラグインMSTest カバレッジ結果を出す

Violations プラグインFxCop の結果表示

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

今日お話しする内容

Jenkins / CI体験談今 .NET のプロジェクトで使うならおまけ

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

CUI さいこー

自動化するためには、 GUI ベースだと中々難しいGUI ベースで設定ファイルが作成出来る かつ CUI で実行出来るツールが便利!PartCover 、 FxCop 、 Sandcastle Help File Builder はそういった使い方が出来ます

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

MSBuild ファイル (.proj) を別に用意する

Jenkins で テストやカバレッジ、コード解析のコマンドを叩く設定を書いてると、Jenkins が無いと何も出来なくなる!

CI サーバーに依存している状態!コミットしないと何もわからない!

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

MSBuild ファイル (.proj) を別に用意する

レポート用やリリース用等、別途 MSBuild ファイルを作成しておくと便利

リポジトリから最新取って、タグつけて、ビルド、テスト、納品物の圧縮 等も、 MSBuild にまとめて記述出来たりします

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

まとめ

.NET のプロジェクトでも十分使えますTFS を使っている方は無理に乗り換えなくても良いですGUI / CUI 両方使えるツールがさいこーMSBuild は自動化の第一歩

CI サーバーが無くても自動化出来ます