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

Post on 28-May-2015

9.536 views 4 download

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 サーバーが無くても自動化出来ます