もう少し汎用的に使えるビルドスクリプト
SubVersionから最新ソースを取得してリビルドするサンプルスクリプト
PropertyGroupは適宜変更してください
<?xml version="1.0" encoding="utf-8"?> <Project DefaultTargets="BuildAll" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <!-- カスタムタスクライブラリ MSBuildCommunityTasksを利用するための設定 --> <Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets" /> <PropertyGroup> <!-- ビルドプロジェクト名 --> <ProjectName>BuildProj</ProjectName> <!-- SubVersionリポジトリ --> <RepositoryPath>svn://localhost/BuildTest/trunk</RepositoryPath> <!-- SubVersionユーザ --> <RepositoryUser>harry</RepositoryUser> <!-- SubVersionパスワード --> <RepositoryPassword>harryssecret</RepositoryPassword> <!-- ビルド用ワークディレクトリ --> <WorkingDirectory>.\Build</WorkingDirectory> <!-- コンフィグ --> <BuildConfig>Release</BuildConfig> <!-- SMTPサーバ --> <SMTPServer>SMTPServer</SMTPServer> <!-- エラーメール送信先 --> <ErrorMailAddress>to_address@hogehoge.com</ErrorMailAddress> </PropertyGroup> <!-- ワークディレクトリを削除する --> <Target Name="CleanSource"> <Message Text="Removing all source files from $(WorkingDirectory)" /> <RemoveDir Directories="$(WorkingDirectory)" /> </Target> <!-- Svnから最新のソースコードを取得する --> <Target Name="GetLatestFiles"> <Message Text="Checking out trunk into $(WorkingDirectory)" /> <SvnExport RepositoryPath="$(RepositoryPath)" LocalPath="$(WorkingDirectory)" UserName="$(RepositoryUser)" Password="$(RepositoryPassword)"> <Output TaskParameter="Revision" PropertyName="Revision" /> </SvnExport> <Message Text="Have got revision: $(Revision)"/> </Target> <!-- 取得したソースコードをコンパイルする --> <Target Name="Build"> <MSBuild Projects="$(WorkingDirectory)\$(ProjectName)\$(ProjectName).csproj" Targets="ReBuild" Properties="Configuration=$(BuildConfig);" /> <!-- ビルド失敗時に実行するタスク --> <OnError ExecuteTargets="ErrorMail" /> </Target> <!-- ビルド失敗時メールを送信する --> <Target Name="ErrorMail" > <Mail SmtpServer="$(SMTPServer)" From="noreply@example.com" To="$(ErrorMailAddress)" Subject="自動ビルド失敗 $(ProjectName)プロジェクト" Body="$(ProjectName)プロジェクトビルドに失敗しました。" /> </Target> <!-- ビルドプロセスを実行する --> <Target Name="BuildAll"> <CallTarget Targets="CleanSource" /> <CallTarget Targets="GetLatestFiles" /> <CallTarget Targets="Build" /> </Target> </Project>
ビルドファイルの作成
プロジェクトファイルをリビルドし、エラー時は指定先へメールを送信する最低限のファイル。
<?xml version="1.0" encoding="utf-8" ?> <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <!-- カスタムタスクライブラリ MSBuildCommunityTasksを利用するための設定 --> <Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets"/> <Target Name="Build" > <!-- プロジェクトのリビルド --> <MSBuild Projects="C:\BuildTest\BuildProj\BuildProj.csproj" Targets="ReBuild" Properties="Configuration=Release;" /> <!-- ビルド失敗時に実行するタスク --> <OnError ExecuteTargets="ErrorMail" /> </Target> <!-- ビルド失敗時メールを送信する --> <Target Name="ErrorMail" > <Mail SmtpServer="SMTPServer" From="noreply@hogehoge.com" To="to_address@hogehoge.com" Subject="Msbuildビルド失敗" Body="プロジェクトビルドに失敗しました。" /> </Target> </Project>
ファイル内の以下の部分は適宜修正してください。(プロジェクトファイルのパスとSMTPサーバと送信先メールアドレス)
Projects="C:\BuildTest\BuildProj\BuildProj.csproj"
SmtpServer="SMTPServer"
To="to_address@hogehoge.com"
MSBuildCommunityTasksのインストール
msbuildの標準機能ではメール送信が出来ないため、MSBuildCommunityTasksをインストールします。
インストール時にエラーになる事があります。( Failed to open XML file, system error:-2147024786)
その場合は以下の手順でとりあえず使えるようになります。
- ソース一式をダウンロードして解凍します。
- 続いてC:\Program Files\MSBuild\MSBuildCommunityTasks フォルダを作成し、解凍したフォルダから「MSBuild.Community.Tasks.Targets」と「MSBuild.Community.Tasks.dll」をコピーしてください。
- (ヘルプファイルも解凍したフォルダ内にあります)
Msbuildでビルド失敗時にメールを送信
知っていれば簡単な事なのに、調べてみると意外と大変でした。
ソフトサイエンスシリーズ 第28回 「世界に広がるRuby」 〜生み
地下鉄の広告でたまたま見た中京大学の公開講座
ソフトサイエンスシリーズ 第28回 「世界に広がるRuby」 〜生みの親が語る〜に興味があったので申し込んで見ました。
10月12日(金)なので仕事半休して行ってみようかと。
会社から歩いても30分ほどだし。
RubyってRubyを256倍使うための本 極道編 と Rubyを256倍使うための本 邪道編 読んで面白い言語だなと思ったけど
仕事のコンピュータに入れるわけにも行かなかったから結局使わなくなったんだな。確か。
また興味がでてきた!
抽選当たればいいなー