HudsonでASP.NETアプリをデプロイする設定、.NET Framework 4版(・∀・)

Hudsonを使って、CIでビルドの実行やテストを流す他にも、ビルドしたWebアプリをIISにデプロイして、最新版の動作が確認できるような設定をしています(・∀・)
っで、先週、開発プロジェクトをVisual Studio 2010/.NET Framework 4対応にして、Hudsonのデプロイ設定もそれに併せて変更したのでその時のメモです。


なお、デプロイ先の環境はWindows Server 2008 R2IIS 7.5になります。
また、デプロイにはmsdeployを使用しますが、Visual Studio 2010がインストールされていない環境については、別途msdeployをインストールしておく必要があります。
っで、その辺のインストールやHudsonの環境構築の話は省略して、Hudsonの必要な設定の所だけを記述します(´д`;)


あと、以下の内容はHudsonとIISが同じWindows Server上で動作している場合の設定になりますが、msdeployのオプションを指定すればHudsonからリモートのWebサーバーにデプロイも可能だと思います(・ω・)


っということで、Hudsonで行う設定について。

MSBuild設定

プロジェクトのビルドはMSBuild Pluginを使用するので、[Hudsonの管理]-[プラグインの管理]から追加しておきます。
次に、MSBuildの場所を設定するために、[Hudsonの管理]-[システムの設定]を開きます。
[MSBuild Builder]欄で[追加]ボタンを押下して、下記の様な設定を行い、MSBuildの場所を指定しておきます。

name MSBuild v4
Path To msbuild.exe C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe


ジョブの設定

ASP.NETアプリ用のジョブは「フリースタイル・プロジェクト」を使って作成しています。
プロジェクトの作成後、ダッシュボードから該当のジョブを選択し、[設定]画面を開きます。
設定を行うのは下記の項目になります。

リポジトリからソースコードを取得するための設定を行います。
使っている[ソースコード管理システム]と運用ポリシーにあわせた[ビルド・トリガ]の設定をしてください。
例えば、[ソースコード管理システム]には[Subversion]を選択して[リポジトリURL]を設定し、[ビルド・トリガ]は[SCMをポーリング]に設定する等(・ω・)

  • ビルド-プロジェクトのビルド

プロジェクトをビルドして、配置パッケージを作成するための設定を行います。
これは、Visual Studio上でプロジェクトのコンテキストメニューから[配置パッケージの作成]を行う作業に相当するものです。


Hudson上でジョブの設定画面の[ビルド]項目に移動し、[ビルド手順の追加]から[Build a Visual Studio project or solution using MSBuild.]を選択します。
MSBuildの項目が追加されたら、各入力欄には次のような値を入力します。

MsBuild Version MSBuild v4
MsBuild Build File D:\Build\Hudson\jobs\MyApp\workspace\trunk\MyApp.Web\MyApp.Web.csproj
Command Line Arguments /t:Package /p:Configuration=Release

MSBuildの対象とするプロジェクトファイルはHudsonがソースコード管理から取得したものを指定します。
引数のConfigurationで指定しているReleaseはビルドの構成です。
Release以外に環境固有の構成(Stagingとかの構成を作って、Web.Staging.configを使う様にするとか)を作成していれば、それを指定します。


これで、ビルドが実行されるとobj\Release\Package\MyApp.Web.zipに配置パッケージが作成されます。

  • ビルド-IISへのデプロイ

msdeployを使用してIISへ作成したパッケージをデプロイする設定を行います。
[ビルド手順の追加]から[Windowsバッチコマンドの実行]を選択し、[コマンド]欄に次のような値を入力します。

"C:\Program Files\IIS\Microsoft Web Deploy\\msdeploy.exe" -verb:sync -source:package='D:\Build\Hudson\jobs\MyApp\workspace\trunk\MyApp.Web\obj\Release\Package\MyApp.Web.zip' -dest:auto -setParam:"IIS Web Application Name"="MyWebSite\MyApp"

これで、msdeployを使用してIISへ配置パッケージのデプロイが行えます。
なお、配置パッケージの作成時にPackageディレクトリに作成される「プロジェクト.deploy.cmd」ファイル(内部的にmsdeployを使用)を使ってもデプロイは可能ですが、ここでは、同じくPackageディレクトリに作成される「プロジェクト.SetParameters.xml」の設定を使用せずに、パラメータを自由に指定するためにmsdeployを直接使用しています(・ω・)

その他

msdeployの使用時のTipsについてです。

  • Webサイトのルートへのデプロイ

WebサイトのサブディレクトリにWebアプリケーションをデプロイするのではなく、Webサイトのルートにデプロイする場合には"IIS Web Application Name"="MyWebSite\MyApp"ではなく"IIS Web Application Name"="MyWebSite"の様に指定します。

  • 異なる物理パスへのデプロイ

デプロイを行うと、サイトの物理パス下にファイルがコピーされます。
サイトの物理パスとは異なる場所にデプロイを行いたい場合、IISマネージャーを使用して事前に[アプリケーションの追加...]を行い、物理パスを指定したアプリケーションを追加しておきます。


っということで、これで動作確認用サイトへのデプロイ処理が自動化できまスタヽ(´ー`)ノ
この設定を行っておくと、開発者以外の人が最新環境を確認するのに良いのですよ(・∀・)