[アーカイブ] TFS のビルドプロセスを自在に!ビルドアクティビティの設定方法と自動ビルドでツイートする方法 [Advent 12/7]
<オリジナル投稿 2012年12月7日 本ポストの情報はオリジナル投稿時点のものです。マイクロソフトの正式な見解や製品の仕様を保証するものではないことをご了承ください。>
ひとり気ままな Advent Calendar と称して、12/24 まで毎日エントリーを更新してみています。昨日、
自動ビルドでツイートする [Advent 12/6]
というエントリーを書きました。ビルドプロセスの中でツイートをしてしまおうというわけですが、これらはTFSビルドアクティビティで簡単にできます。
このツイートするアクティビティは、TFS Community Build Extensions に含まれています。
TFS Community Build Extensions (CodePlex.com)
ここでは、このビルドアクティビティを TFS のビルドプロセスに取り込む方法を解説します。ステップは大きく分けて3つです。
- ビルドコントローラーでアクティビティを使えるようにする
- ビルドプロセスをカスタマイズし、アクティビティを差し込む
- ビルド定義を作成し、実行する
1. ビルド アクティビティのアセンブリを使えるようにする
各ビルドエージェントでカスタムのビルド アクティビティを利用できるようにするにはアセンブリにアクセスでできるようにする必要があります。ビルドエージェントのGACにアセンブリを登録する方法もありますが、エージェントが増えるたびに個別対応となるので、避けたいところでもあります。ここでは違う方法を。アクティビティのアセンブリをソース管理下においてしまいましょう。
場所は特に問いませんが、TFS のビルドプロセスのテンプレートが格納されている場所にサブフォルダを作成するなどがいいでしょう。
まずは、「BuildProcessTemplate」をワークスペースにマップしましょう。
ワークスペースにマップすることで、サブフォルダを作成できるようになります。
たとえば、「Custom Assemblies」フォルダを作りましょう。
次に Windows エクスプローラーなどを使ってこのフォルダにアクティビティのアセンブリをコピーします。
TFS Community Build Extensions のアセンブリは、Visual Studio 2010 用と Visual Studio 2012 用があるので、どちらか一方をコピーすればOKです。ここでは、Visual Studio 2012 用をコピーします。「VS11」の内容をコピペします。
コピーしたら、Visual Studio のソース管理エクスプローラーに戻ってきます。
コピーしたフォルダを右クリックして、「項目をフォルダーに追加」を選択します。
追加するアセンブリを選択し、[次へ]をクリックします。
追加する項目と、除外する項目を確認したら、[完了]をクリックします。
あとは、これをチェックインします。
これでソース管理下にアセンブリがあるので、どこからでもアクセスしようと思えばできるようになりました。
次に、「ビルドコントローラーの管理」での設定に入ります。[ビルド] メニューからか、チーム エクスプローラーで、「ビルド」→「アクション」→「ビルドコントローラーの管理」にアクセスします。
ビルドコントローラーのプロパティを開きます。
「カスタム アセンブリへのバージョン コントロール パス」に先にコピーしたフォルダーを指定します。ちなみに、上記画面では、テスト アダプターを指定しています。NUnitや xUnit.net などを自動実行したい場合は、この指定フォルダに NUnitなどのテスト実行用のアセンブリを入れておけばいいわけです。
設定は、以上です。これでカスタムのビルド アクティビティを自動ビルドプロセスで実行することができるようになります。
2. ビルドプロセスをカスタマイズし、アクティビティを差し込む
ビルドプロセスのカスタマイズをするには、まずプロジェクトを新規に作成します。
プロジェクトは、クラスライブラリで構いません。プロジェクト作成時にできた Class1.cs などのファイルは不要ですので、削除します。
次に、「BuildProcessTemplates」にあるビルドプロセステンプレートを複製します。ここでは DefaultTemplate.11.1.xaml にしましょう。
単純コピーで複製してもいいですが、今回はあえて分岐を使います。あとでマージができるようになりますので。
DefalutTemplate.11.1.xaml を右クリックして、「分岐とマージ」>「分岐」をクリックです。
この分岐したファイル(TweetTemplate.11.1.xaml)を先ほど作成したクラスライブラリのプロジェクトに追加します。
既存の項目として追加しますが、「リンクとして追加」をします。
この xaml を開きます。
TFS のビルドワークフローは、WF (Windows Workflow Foundation) で構築されているので、 グラフィカルに把握/変更/追加/削除が行えます。アクティビティが「ツールボックス」にありますので、これをワークフローに追加していくのが基本です。
カスタムのアクティビティを追加するには、アセンブリをこのプロジェクトの参照に追加する必要があります。
ここでは、先のステップでソース管理に追加したアセンブリを指定すればいいです。
参考の追加を行ったら、次に、「ツールボックス」でタブを追加し、「アイテムを選択」として追加します。
アイテムの追加は、「参照」から行えます。先のアセンブリを選択します。Tweet したい場合は、TfsBuildExtensions.Activities.dll を読み込みます。
ツールボックスに、アクティビティが表示されました。
Tweetしたい場合は、Twitter アクティビティをビルド ワークフローの任意の箇所に ドラッグ&ドロップすればいいです。たとえば、
詳細な設定については、以下の情報を参照してください。Twitter側でアプリを登録する必要があります。
その他のアクティビティについてはチュートリアルがありますので、そちらをご覧ください。
ビルドワークフローを変更し終えたら、XAML ファイルをチェックインします。
以上です。これで、この新しいビルドプロセステンプレートが使えるようになりました。
3. ビルド定義を作成し、実行する
さて、ここからは、通常の「ビルド定義」の新規作成です。
以下、簡単ステップを載せておきます。
定義名を入力します。なんでもかまいません。
トリガーを設定します。継続的インテグレーションの進化形である「ゲートチェックイン」がおすすめです。ソースリポジトリにごみが残らないで継続的インテグレーションが行えます。
ビルドプロセスについては、注意が必要です。通常は、何も変更しなくてもよかったですが、今回は、カスタムビルドワークフローを動かしたいので、多少設定を変更します。
「▽詳細の表示」をクリックすると以下のようになります。
「既定テンプレート (DefaultTemplate.11.1.xaml)」から変更します。
[新規作成]ボタンをクリックします。
今回は、「既存の XAML ファイルを選択」でいいでしょう。
[参照] して TweetTemplate.11.1.xaml を選択します。
設定はたったのこれだけです。
ひとり気ままな Advent Calendar 一覧:
- 指折り数えて待てないエンジニアのための Visual Studio Advent Calendar
- TFS 2012 with Update 1 Power Tools 提供はじまる [Advent 12/1]
- Eclipse/CLI で TFS にどこからでもつなぐ Team Explorer Everywhere 2012 Update 1 提供はじまる~日本語 言語パックも提供 [Advent 12/2]
- TFS ビルドサービスを可視化する [Advent 12/3]
- ビデオで学ぶ Visual Studio 2012 (日本語でOK)[Advent 12/4]
- TFS Express 2012 with Update 1 をセットアップする [Advent 12/5]
- 自動ビルドでツイートする [Advent 12/6]
- TFS のビルドプロセスを自在に!ビルドアクティビティの設定方法と自動ビルドでツイートする方法 [Advent 12/7]
- 意外と知らない TFS のレポート機能と Excel 連携 [Advent 12/8]
- 意外と知らない Visual Studio からの Excel レポート作成 [Advent 12/9]
- 意外と知らない TFS のデータウェアハウスを手動で更新する方法 [Advent 12/10]
- Visual Studio 2012 Update 1 ALM 仮想マシンとハンズオン資料の提供はじまる [Advent 12/11]
- Team Foundation Service 12/10 (Sprint 40) 更新 [Advent 12/12]
- スクラムの特徴をあらわす亜流な図 [Advent 12/13]
- Team Foundation Server のポスターガイドを作ってみました [Advent 12/14]
- Team Foundation Service に権限のないユーザーでアクセスすると [Advent 12/15]
- TF Service アカウントのパスワードを忘れた!という場合の対処方法 [Advent 12/16]
- User Delight を意識した開発へ ~ あなたは、あなたの現場が見えてますか?[Advent 12/17]
- Team Foundation Service で Java の継続的インテグレーション Update 1 での進化! [Advent 12/18]
- Team Foundation Service – 管理者の変更とタイムゾーンの変更 [Advent 12/19]
- Disciplined Agile Delivery を TFS に実装してみた [Advent 12/20]
- 2012 レトロスペクティブ ~ 第一 四半期 [Advent 12/21]
- 2012 レトロスペクティブ ~ 第二 四半期 [Advent 12/22]
- 2012 レトロスペクティブ ~ 第三 四半期 [Advent 12/23]
- 2012 レトロスペクティブ ~ 第四 四半期 [Advent 12/24]