[アーカイブ] 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. ビルドコントローラーでアクティビティを使えるようにする
  2. ビルドプロセスをカスタマイズし、アクティビティを差し込む
  3. ビルド定義を作成し、実行する

1. ビルド アクティビティのアセンブリを使えるようにする

各ビルドエージェントでカスタムのビルド アクティビティを利用できるようにするにはアセンブリにアクセスでできるようにする必要があります。ビルドエージェントのGACにアセンブリを登録する方法もありますが、エージェントが増えるたびに個別対応となるので、避けたいところでもあります。ここでは違う方法を。アクティビティのアセンブリをソース管理下においてしまいましょう。
場所は特に問いませんが、TFS のビルドプロセスのテンプレートが格納されている場所にサブフォルダを作成するなどがいいでしょう。
まずは、「BuildProcessTemplate」をワークスペースにマップしましょう。
image
image
ワークスペースにマップすることで、サブフォルダを作成できるようになります。
たとえば、「Custom Assemblies」フォルダを作りましょう。
image
次に Windows エクスプローラーなどを使ってこのフォルダにアクティビティのアセンブリをコピーします。
TFS Community Build Extensions のアセンブリは、Visual Studio 2010 用と Visual Studio 2012 用があるので、どちらか一方をコピーすればOKです。ここでは、Visual Studio 2012 用をコピーします。「VS11」の内容をコピペします。
image
コピーしたら、Visual Studio のソース管理エクスプローラーに戻ってきます。
コピーしたフォルダを右クリックして、「項目をフォルダーに追加」を選択します。
image
image
追加するアセンブリを選択し、[次へ]をクリックします。
image
image
追加する項目と、除外する項目を確認したら、[完了]をクリックします。
image
あとは、これをチェックインします。
image
これでソース管理下にアセンブリがあるので、どこからでもアクセスしようと思えばできるようになりました。
次に、「ビルドコントローラーの管理」での設定に入ります。[ビルド] メニューからか、チーム エクスプローラーで、「ビルド」→「アクション」→「ビルドコントローラーの管理」にアクセスします。
image
ビルドコントローラーのプロパティを開きます。
image
「カスタム アセンブリへのバージョン コントロール パス」に先にコピーしたフォルダーを指定します。ちなみに、上記画面では、テスト アダプターを指定しています。NUnitや xUnit.net などを自動実行したい場合は、この指定フォルダに NUnitなどのテスト実行用のアセンブリを入れておけばいいわけです。
image
設定は、以上です。これでカスタムのビルド アクティビティを自動ビルドプロセスで実行することができるようになります。

2. ビルドプロセスをカスタマイズし、アクティビティを差し込む

ビルドプロセスのカスタマイズをするには、まずプロジェクトを新規に作成します。
プロジェクトは、クラスライブラリで構いません。プロジェクト作成時にできた Class1.cs などのファイルは不要ですので、削除します。
image
次に、「BuildProcessTemplates」にあるビルドプロセステンプレートを複製します。ここでは DefaultTemplate.11.1.xaml にしましょう。
image
単純コピーで複製してもいいですが、今回はあえて分岐を使います。あとでマージができるようになりますので。
DefalutTemplate.11.1.xaml を右クリックして、「分岐とマージ」>「分岐」をクリックです。
image
image
この分岐したファイル(TweetTemplate.11.1.xaml)を先ほど作成したクラスライブラリのプロジェクトに追加します。
既存の項目として追加しますが、「リンクとして追加」をします。
image
image
この xaml を開きます。
image
TFS のビルドワークフローは、WF (Windows Workflow Foundation) で構築されているので、 グラフィカルに把握/変更/追加/削除が行えます。アクティビティが「ツールボックス」にありますので、これをワークフローに追加していくのが基本です。
カスタムのアクティビティを追加するには、アセンブリをこのプロジェクトの参照に追加する必要があります。
image
ここでは、先のステップでソース管理に追加したアセンブリを指定すればいいです。
image
参考の追加を行ったら、次に、「ツールボックス」でタブを追加し、「アイテムを選択」として追加します。
image
アイテムの追加は、「参照」から行えます。先のアセンブリを選択します。Tweet したい場合は、TfsBuildExtensions.Activities.dll を読み込みます。
image
ツールボックスに、アクティビティが表示されました。
image
Tweetしたい場合は、Twitter アクティビティをビルド ワークフローの任意の箇所に ドラッグ&ドロップすればいいです。たとえば、
image
詳細な設定については、以下の情報を参照してください。Twitter側でアプリを登録する必要があります。

How to integrate the Twitter build activity

その他のアクティビティについてはチュートリアルがありますので、そちらをご覧ください。

TFS Community Build Extensions Getting Started

ビルドワークフローを変更し終えたら、XAML ファイルをチェックインします。
image
以上です。これで、この新しいビルドプロセステンプレートが使えるようになりました。

3. ビルド定義を作成し、実行する

さて、ここからは、通常の「ビルド定義」の新規作成です。
image
以下、簡単ステップを載せておきます。
image
定義名を入力します。なんでもかまいません。
image
トリガーを設定します。継続的インテグレーションの進化形である「ゲートチェックイン」がおすすめです。ソースリポジトリにごみが残らないで継続的インテグレーションが行えます。
ビルドプロセスについては、注意が必要です。通常は、何も変更しなくてもよかったですが、今回は、カスタムビルドワークフローを動かしたいので、多少設定を変更します。
image
「▽詳細の表示」をクリックすると以下のようになります。
image
「既定テンプレート (DefaultTemplate.11.1.xaml)」から変更します。
[新規作成]ボタンをクリックします。
今回は、「既存の XAML ファイルを選択」でいいでしょう。
image
[参照] して TweetTemplate.11.1.xaml を選択します。
image
image
設定はたったのこれだけです。

ひとり気ままな Advent Calendar 一覧: