ALM Advent Calendar 2012 TFSからの通知メールをカスタマイズする #tfsug

ALM Advent Calendar 2012 #TFSUG : ATND 15日目のエントリです。

@kaji_3 こと、かじです。SIerでエンジニアしてます。
今日はTFSのメールによる通知、プロジェクト警告の設定と、カスタマイズについてです。

作業項目の変更、ビルドイベントなどのTFSからの通知をメールで受け取る事ができます。ゲートチェックインが導入できないプロジェクトで自動ビルドが失敗した場合などに便利ですね。ただ、失敗時にメールを受け取るのも寂しいのでメールにメッセージを込めるのもありかと。ということでカスタマイズしてみましょう。

このエントリの結論

カスタマイズしてこんな通知を受け取ることができます。
f:id:kaji_3:20121215084923p:plain

環境

送信側の設定

インストール時に設定していない場合は、「Team Foundation Server 管理コンソール」を起動し「アプリケーション層」→「通知の設定」をクリックします。
f:id:kaji_3:20121215073538p:plain
送信用メールに必要な設定を行います。
f:id:kaji_3:20121215073730p:plain
TFS2012から認証が必要なSMTPサーバへ送信するための設定が画面から可能になっていますねー
(ここでメール送信をテストする機能が欲しい。。)

受信側の設定(チームメンバー)

Visual Studio を起動し「チーム」→「プロジェクト警告」をクリックします。
f:id:kaji_3:20121215074016p:plain

Web アクセスのプロジェクト警告が表示されます。
f:id:kaji_3:20121215074214p:plain

「自分用の警告の送信先(編集)」をクリックして送信先メールアドレスを設定します。
f:id:kaji_3:20121215074452p:plain

あとはどんな通知を受け取るか設定します。
f:id:kaji_3:20121215074743p:plain

高度な警告の管理ページを見ればわかりますがデフォルトでの「ビルドが完了したとき」と「ビルドの終了」の違いは以下の通り。

  • ビルドが完了したとき
    • 自分が要求していないビルドも含む
  • ビルドの終了
    • 自分が要求したビルドのみ

チームとしての設定

個人用設定の画面の「高度な警告の管理ページ」をクリックします。
f:id:kaji_3:20121215075644p:plain
(コントロールパネル経由で行く方法が正しいのかも知れませんが手間なので紹介しません)
f:id:kaji_3:20121215075837p:plain
高度な管理ページの「チーム個の警告」の対象となる警告を選択します。今回は「ビルド個の警告」です。
新規作成から画面に従っていけば作成できますでの省略します。

本文のカスタマイズ

TFSからのメールはXLSで元データから加工されます。そのテンプレートは以下の場所にあります。

C:\Program Files\Microsoft Team Foundation Server 11.0\Application Tier\TFSJobAgent\Transforms\1041

送信形式ごとにテンプレートがあります。
(どの形式になっているかは、高度な管理ページから参照できます)

今回は、「ビルドが完了したとき」に「HTML」で送信する設定がされているとして「BuildCompletedEvent.xsl」を編集します。
(AAをメールにつける場合、フォントを指定する必要があるのでHTMLにする必要があります)

XSLのため、慣れていないと厳しいですが見ているとビルド失敗の条件分岐がわかります。

<xsl:when test="tb:Build/@Status = 'Failed'">

これを使ってテンプレートを以下のように編集します。編集時は管理者権限が必要になるので注意。
TFSTips/BuildCompletedEvent.xsl at master · kaji-3/TFSTips · GitHub


んで、ビルドエラーをしてみると。。。。
f:id:kaji_3:20121215084923p:plain

こうなります!!
どうぞ楽しいTFSライフをお送りください!