TFSの極意 vol.8 | ビルド定義と Windows Workflow Foundation

TFS のチームビルド機能は、非常に有効です。開発チームにおける結合、ビルドに関する課題を飛躍的に克服してくれます。

たとえば、

  • 自分の開発環境ではビルドできたのに、チェックインしたら、ビルドも通らなくなった
  • 同様に、ビルドはとったが、動作がおかしくなった(要するにバグを生んだ)
  • ウィークリービルドしてみたら、動かない。どこに問題があったか分析や追跡が大変
  • いったいこのビルドは、何が変更されたのか?あのバグは直っているのか?
  • そもそも、自動ビルド環境はほしいが構築が大変!

挙げたらきりがないのでやめますが、TFS のチームビルドは、これらに非常に有効です。

インストール方法は、先に述べていますので、そちらをご覧ください。

TFSの極意 vol.4 | ビルドサービスのインストール

ここでは、ビルドを自動化するためのビルド定義の方法を中心に、実はビルド定義では、事細かに指示をさせることができることをご紹介します。

☆ ☆ ☆ ☆ ☆スクリーンショット(2010-06-16 21.33.34)

まず、ビルド定義の作成ですが、チーム エクスプローラ上の「ビルド管理」にてビルド定義の新規作成を行うだけです。

新たなウィンドウが開きます。

まずは、名前を決めるところからですが、ここで決めた名前が、以後、ビルド管理する際のビルド識別名となるのが既定です(もちろん、違う識別名を付けることができます)。

スクリーンショット(2010-06-16 21.46.01)

次に行うのがトリガーの設定です。要するにビルドをどのタイミングで実行するかです。

スクリーンショット(2010-06-16 21.49.38)

既定は、手動となっています。ビルドの実行も自動化したい場合は、これ以外を選択します。

「継続的インテグレーション」というそのものズバリ!なものを選択すれば、開発者がチェックインを行うたびに、ビルドサーバーで、自動的にビルドが実行されます。ある程度キューにためて実行することもできますし、2010からは、「ゲートチェックイン」が行えるようになりました!

これは、基本、継続的インテグレーションなのですが、開発者がチェックインを行った際に、実質チェックインを行わず、シェルブの機能を使い保留させます。その状態で、継続的インテグレーションを実施し、ビルドの成否、テストの成否を判断し、成功した場合は、自動的にチェックイン、失敗だった場合は、開発者に即通知し、判断(シェルブをとりやめれば、リポジトリにごみは残らないわけです)することができるという代物です。スクリーンショット(2010-06-16 21.55.55)

もちろん、デイリービルドやウィークリービルドのように指定日時に自動実行もできます。

次に、ワークスペースを指定します。特定のソリューションのみを対象にするなど決定を行うことができます。

スクリーンショット(2010-06-16 21.58.34)

ビルドコントローラーとドロップロケーションを決めます。コントローラーを指定することで、そのコントローラー配下のビルド エージェントにビルドをさせることができます(特定のエージェントにビルドさせることもできます)。

ドロップ ロケーションは、UNC パスで指定します。ここにビルドした際の成果物がビルド単位にフォルダ分けられ、格納されます。

スクリーンショット(2010-06-16 22.01.55)

さてさて、ビルドプロセスの決定です。ここがポイントになりますが、ここで、ビルド構成や自動実行したい、コード分析やテストなどを細かく設定できます。

ここで、特定のビルド エージェントに処理をさせるなども決めます。

ここで、今回のもう一つのお題目です!実は、このビルドのプロセスは、XAML で記述されています。

上部に、

スクリーンショット(2010-06-16 22.05.11)

という部分がありますが、これを展開すると、

スクリーンショット(2010-06-16 22.05.27)

というように XAML が現れます。XAML といっても WPF ではありません、そう WF こと、Windows Workflow Foundation です。

このファイルを開くと!

スクリーンショット(2010-06-16 22.09.41)

ワークフローが出てまいります。ツールボックスには、専用のアクティビティ、そして WF の標準のアクティビティがあります。これを D&D で追加したりすることができます。

スクリーンショット(2010-06-16 22.09.00)すべて閉じた状態だと非常にシンプルなのがわかりますね。

でもこれをひとたび展開すると!

 スクリーンショット(2010-06-16 22.13.11)

超複雑です(笑)。

いえいえ、通常、これだけのビルド自動化を行うと、そりゃ複雑な処理をしないといけないわけです。それを基本は、ウィザードで設定ができ、カスタマイズが必要ならば、XML を編集するのではなく、ワークフローをグラフィカルに定義することができるわけです。

私も実際に、これらにいくつか処理を追加したりします。たとえば、ビルドとテストが成功したら、テスト環境へデプロイするとかです。そういう処理を追加するのが本当に楽です!

ということで、今回は、TFS の自動ビルド機能を支える簡単にできるビルド定義の作り方と、WF によるビルドプロセスのカスタマイズができますよっというお話でした。

長沢