次の方法で共有


配置をサポートするビルド定義を作成する

作成者: Jason Lee

Team Foundation Server (TFS) 2010 で任意の種類のビルドを実行する場合は、チーム プロジェクト内にビルド定義を作成する必要があります。 このトピックでは、TFS で新しいビルド定義を作成する方法と、チーム ビルドのビルド プロセスの一部として Web 展開を制御する方法について説明します。

このトピックは、Fabrikam, Inc という架空の会社のエンタープライズ展開要件に基づく一連のチュートリアルの一部です。このチュートリアル シリーズでは、サンプル ソリューションである Contact Manager ソリューションを使用して、ASP.NET MVC 3 アプリケーション、Windows Communication Foundation (WCF) サービス、データベース プロジェクトなど、現実的なレベルの複雑さの Web アプリケーションを表します。

これらのチュートリアルの中心にある配置方法は、「プロジェクト ファイルの 理解」で説明されている分割プロジェクト ファイルのアプローチに基づいています。この方法では、ビルドと配置のプロセスが 2 つのプロジェクト ファイルによって制御されます。1 つは、すべての移行先環境に適用されるビルド命令を含み、もう 1 つは環境固有のビルドと配置設定を含みます。 ビルド時に、環境固有のプロジェクト ファイルが環境に依存しないプロジェクト ファイルにマージされ、ビルド手順の完全なセットが形成されます。

タスクの概要

ビルド定義は、TFS のチーム プロジェクトに対してビルドが発生する方法とタイミングを制御するメカニズムです。 各ビルド定義では、次の指定が行われます。

  • Visual Studio ソリューション ファイルやカスタム Microsoft Build Engine (MSBuild) プロジェクト ファイルなど、ビルドする内容。
  • 手動トリガー、継続的インテグレーション (CI)、ゲート付きチェックインなど、ビルドを実行するタイミングを決定する条件。
  • Web パッケージやデータベース スクリプトなどのデプロイ成果物など、Team Build がビルド出力を送信する場所。
  • 各ビルドを保持する必要がある時間。
  • ビルド プロセスのその他のさまざまなパラメーター。

Note

ビルド定義の詳細については、「ビルド プロセスの 定義」を参照してください。

このトピックでは、開発者が新しいコンテンツをチェックインしたときにビルドがトリガーされるように、CI を使用するビルド定義を作成する方法について説明します。 ビルドが成功した場合、ビルド サービスはカスタム プロジェクト ファイルを実行して、ソリューションをテスト環境にデプロイします。

ビルドをトリガーするときは、次のアクションを実行する必要があります。

  • まず、チーム ビルドでソリューションをビルドする必要があります。 このプロセスの一環として、Team Build は Web 発行パイプライン (WPP) を呼び出して、ソリューション内の各 Web アプリケーション プロジェクトの Web 配置パッケージを生成します。 チーム ビルドでは、ソリューションに関連付けられている単体テストも実行されます。
  • ソリューションのビルドに失敗した場合、チーム ビルドではそれ以上のアクションは実行されません。 単体テストの失敗は、ビルド エラーとして扱う必要があります。
  • ソリューションのビルドが成功した場合、チーム ビルドでは、ソリューションのデプロイを制御するカスタム プロジェクト ファイルを実行する必要があります。 このプロセスの一環として、Team Build はインターネット インフォメーション サービス (IIS) Web 配置ツール (Web 配置) を呼び出して、パッケージ化された Web アプリケーションを移行先 Web サーバーにインストールし、VSDBCMD.exe ユーティリティを呼び出して、移行先データベース サーバーでデータベース作成スクリプトを実行します。

これは、次のプロセスを示しています。

上記のプロセスを示します。

Contact Manager サンプル ソリューションには、MSBuild またはチーム ビルドから実行できるカスタム MSBuild プロジェクト ファイル Publish.proj が含まれています。 「ビルド プロセスについて」で説明されているように、このプロジェクト ファイルでは、Web パッケージとデータベースをターゲット環境にデプロイするロジックを定義します。 ファイルには、チーム ビルドで実行されている場合にビルドとパッケージ化のプロセスを省略するロジックが含まれており、デプロイ タスクのみを実行したままにします。 これは、この方法でデプロイを自動化する場合、通常はソリューションが正常にビルドされ、デプロイ プロセスが開始される前に単体テストに合格することを確認する必要があるためです。

次のセクションでは、新しいビルド定義を作成してこのプロセスを実装する方法について説明します。

Note

この手順は、1 つの自動化されたプロセスがソリューションをビルド、テスト、デプロイする場合に、テスト環境へのデプロイに最も適している可能性が高くなります。 ステージング環境と運用環境では、テスト環境で既に検証および検証済みの以前のビルドのコンテンツをデプロイする可能性が高くなります。 この方法については、次のトピック「 特定のビルドのデプロイ」で説明します。

この手順を実行するユーザー

通常、TFS 管理者はこの手順を実行します。 場合によっては、開発者チーム リーダーが TFS のチーム プロジェクト コレクションの責任を負う場合があります。 新しいビルド定義を作成するには、ソリューションを含むチーム プロジェクト コレクションのプロジェクト コレクション ビルド管理者 グループのメンバーである必要があります。

CI と配置のビルド定義を作成する

次の手順では、CI によってトリガーされるビルド定義を作成する方法について説明します。 ビルドが成功した場合、ソリューションはカスタム MSBuild プロジェクト ファイルのロジックを使用してデプロイされます。

CI とデプロイのビルド定義を作成するには

  1. Visual Studio 2010 の [チーム エクスプローラー] ウィンドウで、チーム プロジェクト ノードを展開し、[ビルド] を右クリックし、[新しいビルド定義] をクリックします。

    Visual Studio 2010 の [チーム エクスプローラー] ウィンドウで、チーム プロジェクト ノードを展開し、[ビルド] を右クリックし、[新しいビルド定義] をクリックします。

  2. [ 全般 ] タブで、ビルド定義に名前 ( DeployToTest など) と説明 (省略可能) を指定します。

  3. [ トリガー ] タブで、新しいビルドをトリガーする条件を選択します。 たとえば、開発者が新しいコードをチェックインするたびにソリューションをビルドし、テスト環境にデプロイする場合は、[ 継続的インテグレーション] を選択します。

  4. [ ビルドの既定値 ] タブの [ ビルド出力を次のドロップ フォルダーにコピー する] ボックスに、ドロップ フォルダーの汎用名前付け規則 (UNC) パス ( \TFSBUILD\Drops など) を入力します。

    [ビルドの既定値] タブの [ビルド出力を次のドロップ フォルダーにコピーする] ボックスに、ドロップ フォルダーの汎用名前付け規則 (UNC) パス (\TFSBUILD\Drops など) を入力します。

    Note

    この削除場所には、構成したアイテム保持ポリシーに応じて、いくつかのビルドが格納されます。 特定のビルドからステージング環境または運用環境にデプロイ成果物を発行する場合は、ここでそれらを見つけることができます。

  5. [ プロセス ] タブの [ ビルド プロセス ファイル ] ドロップダウン リストで、[ DefaultTemplate.xaml] を選択したままにします。 これは、すべての新しいチーム プロジェクトに追加される既定のビルド プロセス テンプレートの 1 つです。

  6. [ ビルド プロセス パラメーター ] テーブルで、[ ビルドする項目 ] 行をクリックし、 省略記号 ボタンをクリックします。

    [ビルド プロセス パラメーター] テーブルで、[ビルドする項目] 行をクリックし、省略記号ボタンをクリックします。

  7. [ ビルドする項目 ] ダイアログ ボックスで、[ 追加] をクリックします。

  8. ソリューション ファイルの場所を参照し、[OK] をクリック します

    ソリューション ファイルの場所を参照し、[OK] をクリックします。

  9. [ ビルドする項目 ] ダイアログ ボックスで、[ 追加] をクリックします。

  10. [ 種類の項目] ドロップダウン リストで、[ MSBuild プロジェクト ファイル] を選択します。

  11. 配置プロセスを制御するカスタム プロジェクト ファイルの場所を参照し、ファイルを選択して、[OK] をクリック します

    配置プロセスを制御するカスタム プロジェクト ファイルの場所を参照し、ファイルを選択して、[OK] をクリックします。

  12. [ ビルドする項目 ] ダイアログ ボックスに 2 つの項目が表示されるようになりました。 [OK] をクリックします。

    [ビルドする項目] ダイアログ ボックスに 2 つの項目が表示されるようになりました。[OK] をクリックします。

  13. [ プロセス ] タブの [ プロセス パラメーターのビルド ] テーブルで、[ 詳細設定 ] セクションを展開します。

  14. [ MSBuild 引数] 行に、 ビルドするいずれかの 項目に必要な MSBuild コマンド ライン引数を追加します。 Contact Manager ソリューション シナリオでは、次の引数が必要です。

    /p:DeployOnBuild=true;DeployTarget=Package;
       TargetEnvPropsFile=EnvConfig\Env-Dev.proj
    

    [MSBuild 引数] 行に、ビルドするいずれかの項目に必要な MSBuild コマンド ライン引数を追加します。

  15. 次の点に注意してください。

    1. Contact Manager ソリューションをビルドするときは、 DeployOnBuild=true 引数と DeployTarget=package 引数が必要です。 これは、「Web アプリケーション プロジェクトのビルド とパッケージ化」の説明に従って、各 Web アプリケーション プロジェクトをビルドした後に Web 配置パッケージを作成するように MSBuild に指示します。
    2. Publish.proj ファイルをビルドするときは、TargetEnvPropsFile 引数が必要です。 このプロパティは、「 ビルド プロセスについて」の説明に従って、環境固有の構成ファイルの場所を示します。
  16. [ アイテム保持ポリシー ] タブで、必要に応じて保持する各種類のビルドの数を構成します。

  17. [保存] をクリックします。

ビルドをキューに配置する

この時点で、少なくとも 1 つの新しいビルド定義を作成しました。 これで、定義したビルド プロセスは、ビルド定義で指定したトリガーに従って実行されます。

CI を使用するようにビルド定義を構成した場合は、次の 2 つの方法でビルド定義をテストできます。

  • チーム プロジェクトにいくつかのコンテンツをチェックインして、自動ビルドをトリガーします。
  • ビルドを手動でキューに入れます。

ビルドを手動でキューに登録するには

  1. [チーム エクスプローラー] ウィンドウで、ビルド定義を右クリックし、[新しいビルドのキュー] をクリックします。

    [チーム エクスプローラー] ウィンドウで、ビルド定義を右クリックし、[新しいビルドのキュー] をクリックします。

  2. [ キューのビルド ] ダイアログ ボックスで、ビルドのプロパティを確認し、[ キュー] をクリックします。

    [キューのビルド] ダイアログ ボックスで、ビルドのプロパティを確認し、[キュー] をクリックします。

ビルドの進行状況と結果を確認するには、[チーム エクスプローラー] ウィンドウでビルド定義をダブルクリックします。手動でトリガーされたかどうかに関係なく、ビルドの結果を確認します。 [ビルド エクスプローラー] タブが開きます。

ビルドの進行状況と結果を確認するには、手動または自動のどちらでトリガーされたかに関係なく、[チーム エクスプローラー] ウィンドウでビルド定義をダブルクリックします。

ここから、失敗したビルドのトラブルシューティングを行うことができます。 個々のビルドをダブルクリックすると、概要情報を表示し、クリックして詳細なログ ファイルに移動できます。

個々のビルドをダブルクリックすると、概要情報を表示し、クリックして詳細なログ ファイルに移動できます。

この情報を使用して、失敗したビルドのトラブルシューティングを行い、別のビルドを試みる前に問題に対処できます。

Note

デプロイ ロジックを実行するビルドは、移行先環境で必要なアクセス許可をビルド サーバーに付与するまで失敗する可能性があります。 詳細については、「 Team Build Deployment のアクセス許可の構成」を参照してください。

ビルド プロセスを監視する

TFS には、ビルド プロセスの監視に役立つさまざまな機能が用意されています。 たとえば、TFS からメールを送信したり、ビルドが完了したときにタスク バーの通知領域にアラートを表示したりできます。 詳細については、「 ビルドの実行と監視」を参照してください。

まとめ

このトピックでは、TFS でビルド定義を作成する方法について説明します。 ビルド定義は CI 用に構成されているため、開発者がチーム プロジェクトにコンテンツをチェックインするたびにビルド プロセスが実行されます。 ビルド定義は、カスタム MSBuild プロジェクト ファイルを実行して、Web パッケージとデータベース スクリプトをターゲット サーバー環境にデプロイします。

ビルド プロセスの一環として自動デプロイを成功させるには、ターゲット Web サーバーとターゲット データベース サーバー上のビルド サービス アカウントに適切なアクセス許可を付与する必要があります。 このチュートリアルの最後のトピック「 Team Build Deployment のアクセス許可の構成」では、Team Build サーバーからの自動デプロイに必要なアクセス許可を特定して構成する方法について説明します。

もっと読む

ビルド定義の作成の詳細については、「 基本的なビルド定義を作成 する」および「ビルド プロセスを定義する」を参照してください。 ビルドのキューに関する詳細なガイダンスについては、「ビルド をキューに登録する」を参照してください。