チュートリアル: カスタム ワークフローの定義と Team Foundation ビルドからのデータベースの配置

更新 : 2010 年 7 月

Team Foundation ビルドを使用してデータベース プロジェクトを配置するには、まず、データベースを配置するように構成されたカスタム ワークフローを定義する必要があります。 先にカスタム ワークフローを定義しておかないと、そのワークフロー定義をビルド定義で使用できません。 ワークフローを定義するには、Windows Workflow 4.0 を使用します。 この手順は簡単なので、上級者でなくても実行できます。

このチュートリアルを完了するには、次の作業を行う必要があります。

  1. ビルド プロセス テンプレートの作成

  2. 新しいテンプレートのカスタマイズ

  3. バージョン管理へのテンプレートのチェックイン

必要なアクセス許可

次の手順を実行するには、[ビルド定義の編集] アクセス許可が [許可] に設定されている必要があります。 詳細については、「Team Foundation Server のアクセス許可」を参照してください。

ビルド プロセス テンプレートの作成

ビルド プロセス テンプレートを作成するには、既定のテンプレートをコピーするのが最も簡単です。 この操作は、ビルド定義を作成するときに実行できます。 通常はビルド定義を作成しますが、 このチュートリアルではカスタム ビルド プロセス テンプレートに焦点を絞っているため、新しいビルドの定義に関するその他の詳細には触れません。 データベース プロジェクトのビルドを定義する方法の詳細については、「方法 : Team Foundation ビルドを使用して変更を配置する」を参照してください。

カスタム テンプレートを作成するには

  1. チーム エクスプローラーで、カスタム ワークフローを作成するチーム プロジェクトをクリックします。

  2. [ビルド] メニューの [ビルド定義の新規作成] をクリックします。

  3. [プロセス] タブをクリックすると、次のような画面が表示されます。

    新しいビルド定義用の [プロセス] タブ

  4. [詳細の表示] をクリックし、[新規作成] をクリックします。

    [新しいビルド プロセス テンプレート] ダイアログ ボックスが表示されます。

  5. [既存の XAML ファイルをコピー] をクリックします。

  6. [新しいファイル名] にカスタム ワークフローの名前を指定し、[OK] をクリックします。

    注意

    既存の XAML ファイルを再利用する場合は、[既存の XAML ファイルを選択] をクリックし、バージョン管理サーバー上のファイルのパスを指定します。

  7. ビルド定義のウィンドウで、[ビルド プロセス ファイル] メニューの、テンプレート名を含むハイパーリンクをクリックします。

    ソース管理エクスプローラーに、新しいテンプレートを含むフォルダーが表示されます。

  8. [フォルダー] ペインで、新しいテンプレートを含むフォルダーを右クリックして [最新バージョンの取得] をクリックします。

  9. 新しいテンプレートを右クリックし、[編集用にチェックアウト] をクリックします。

    [チェックアウト] ダイアログ ボックスが表示されます。

  10. [チェックアウト] をクリックします。

  11. 新しいテンプレートを右クリックし、[表示] をクリックします。

    Visual Studio Windows ワークフロー デザイナーが表示されます。

    詳細については、次のどちらかのトピックを参照してください。

新しいテンプレートのカスタマイズ

既定のテンプレートにシーケンスを追加して、ビルド プロセスの末尾に配置手順を追加する必要があります。 XAML ファイルをカスタマイズするには、Windows ワークフロー デザイナーを使用します。 以下の手順は特に複雑ではないため、このデザイナーを以前に使用したことがなくても実行できます。 簡単に言うと、ビルドが成功してテストが失敗しなかった場合に VSDBCMD.EXE を使用してデータベースを配置するシーケンスをワークフローに追加します。

このシーケンスには If アクティビティが 1 つ含まれています。これにより、ビルドが成功してテストが成功した場合またはテストがなかった場合にデータベースが配置されます。 この定義の流れをわかりやすくするために、このセクションは次の 4 つの手順に分かれています。

  1. ワークフローにデータベース配置シーケンスを追加するには

  2. If アクティビティを追加するには

  3. Then Deploy ブロックを定義するには

  4. Else Skip Deployment ブロックを定義するには

ワークフローにデータベース配置シーケンスを追加するには

  1. Windows ワークフロー デザイナーで、[すべて折りたたみ] をクリックします。

    次のような画面が表示されます。

    初期の配置ワークフロー

  2. [ツールボックス] を開き、[制御フロー] セクションを展開し、Sequence アクティビティをデザイナーの [CheckInShelveset ビルドのゲート変更のチェックイン] の下にある矢印にドラッグします。 この矢印の上にマウスを置くと、もう 1 つ矢印が表示されます。

  3. 次の図のように、2 つの矢印の間にアクティビティをドロップします。

    新しいシーケンスをドロップした後のワークフロー

  4. 追加したシーケンスを右クリックし、[プロパティ] をクリックします。

    [プロパティ] ウィンドウが表示されます。

  5. DisplayName プロパティを "Deploy Database" に設定します。

  6. Deploy Database シーケンスで、[Double-click to view] (ダブルクリックして表示) をダブルクリックします。

    次の図のように、デザイナーが Deploy Database シーケンスにズーム インします。

    配置シーケンスを拡張した後のワークフロー

    デザイナーの上部には、次の図のようなナビゲーション チャネルがあります。

    Windows ワークフロー デザイナーのナビゲーション チャネル

次に、Deploy Database シーケンスに If アクティビティを追加します。

If アクティビティを追加するには

  1. [ツールボックス] を開き、[制御フロー] セクションを展開し、If アクティビティを [ここにアクティビティをドロップ] にドラッグします。

    まだ If アクティビティを構成していないため、次の図のように、Deploy Database シーケンスと If アクティビティの両方に警告アイコンが表示されます。

    If アクティビティを追加した後のワークフロー

  2. 追加したアクティビティを右クリックし、[プロパティ] をクリックします。

    [プロパティ] ウィンドウが表示されます。

  3. If アクティビティの DisplayName プロパティを "If Build and Tests Succeeded" に設定します。

  4. If アクティビティの [Double-click to view] (ダブルクリックして表示) をダブルクリックします。

  5. [条件] に次の条件を入力します。

    BuildDetail.CompilationStatus = BuildPhaseStatus.Succeeded And (BuildDetail.TestStatus = BuildPhaseStatus.Succeeded Or BuildDetail.TestStatus = BuildPhaseStatus.Unknown)
    

    この条件は、ビルドが成功したかどうかと、テストが成功したかまたは実行されていないかどうかをテストします。

If Build and Tests Succeeded アクティビティが次の図のようになります。

If アクティビティを拡張した後のワークフロー

次に、If アクティビティの Then の部分に InvokeProcess アクティビティを追加します。

Then Deploy ブロックを定義するには

  1. [ツールボックス] を開き、[Team Foundation ビルドのアクティビティ] セクションで InvokeProcess アクティビティを見つけて、Then 句の [ここにアクティビティをドロップ] にドラッグします。

    まだ InvokeProcess アクティビティを構成していないため、If Build and Tests Succeeded アクティビティと InvokeProcess アクティビティの両方に警告アイコンが表示されます。

  2. Invoke VSDBCMD アクティビティの [Double-click to view] (ダブルクリックして表示) をダブルクリックします。

    アクティビティが次のように表示されます。

    Then 句を定義中のワークフロー

  3. 次の手順を実行して、InvokeProcess アクティビティのプロパティを設定します。

    1. 追加したアクティビティを右クリックし、[プロパティ] をクリックします。

      [プロパティ] ウィンドウが表示されます。

    2. InvokeProcess アクティビティの DisplayName プロパティを "Invoke VSDBCMD" に設定します。

    3. Arguments プロパティを "/a:Deploy /dd+ /dsp:Sql /manifest:DatabaseProjectName.deploymanifest" に設定します。 DatabaseProjectName を、配置するデータベース プロジェクトの名前に置き換える必要があります。

    4. FileName プロパティをビルド サーバーの VSDBCMD.EXE のパスに設定します。 たとえば、ビルド コンピューターに Visual Studio をインストールした場合は「C:\Program Files\Microsoft Visual Studio 10.0\VSTSDB\Deploy\VSDBCMD.EXE」と指定し、Deploy フォルダーをコピーしただけの場合は「C:\Deploy\VSDBCMD.EXE」と指定します。

      重要

      VSDBCMD.EXE を使用してデータベースを配置するには、Deploy フォルダーの内容がビルド コンピューターにある必要があります。 詳細については、「方法: VSDBCMD.EXE を使用してコマンド プロンプトからデータベースの配置を準備する」を参照してください。

    5. WorkingDirectory プロパティを BuildDetail.DropLocation に設定します。

  4. [ツールボックス] を開き、[Team Foundation ビルドのアクティビティ] セクションで WriteBuildMessage アクティビティを見つけて、[標準出力の処理] セクションの [ここにアクティビティをドロップ] にドラッグします。

    まだ WriteBuildMessage アクティビティを構成していないため、Invoke VSDBCMD アクティビティと WriteBuildMessage アクティビティの両方に警告アイコンが表示されます。

  5. 次の手順を実行して、WriteBuildMessage アクティビティのプロパティを設定します。

    1. 追加したアクティビティを右クリックし、[プロパティ] をクリックします。

      [プロパティ] ウィンドウが表示されます。

    2. WriteBuildMessage アクティビティの DisplayName プロパティを "VSDBCMD Output" に設定します。

    3. Importance プロパティを Microsoft.TeamFoundation.Build.Client.BuildMessageImportance.High に設定します。

    4. Message プロパティを stdOutput に設定します。

  6. [ツールボックス] を開き、[Team Foundation ビルドのアクティビティ] セクションで WriteBuildError アクティビティを見つけて、[エラー出力の処理] セクションの [ここにアクティビティをドロップ] にドラッグします。

    まだ WriteBuildError アクティビティを構成していないため、Invoke VSDBCMD アクティビティと WriteBuildError アクティビティの両方に警告アイコンが表示されます。

  7. 次の手順を実行して、WriteBuildError アクティビティのプロパティを設定します。

    1. 追加したアクティビティを右クリックし、[プロパティ] をクリックします。

      [プロパティ] ウィンドウが表示されます。

    2. WriteBuildError アクティビティの DisplayName プロパティを "VSDBCMD Error" に設定します。

    3. Message プロパティを errOutput に設定します。

    4. デザイナーの上部のチャネルで、[If Build and Test Succeeded] をクリックします。

      これにより、ワークフローのレベルが 1 つズーム アウトされます。

この時点で、ワークフローは次のようになります。

Then 句を完了した後のワークフロー

次に、Else アクティビティの詳細を定義します。

Else Skip Deployment ブロックを定義するには

  1. [ツールボックス] を開き、[Team Foundation ビルドのアクティビティ] セクションで WriteBuildWarning アクティビティを見つけて、Else 句の [ここにアクティビティをドロップ] にドラッグします。

    まだ WriteBuildWarning アクティビティを構成していないため、If Build and Tests Succeeded アクティビティと WriteBuildWarning アクティビティの両方に警告アイコンが表示されます。

  2. WriteBuildWarning アクティビティの DisplayName プロパティを "Deployment Skipped" に設定します。

  3. Message プロパティを "Database deployment was skipped" に設定します。

    追加したワークフロー アクティビティを構成したので、警告アイコンが表示されなくなります。

If アクティビティが次のようになります。

データベース配置ワークフローの完了

以上で、指定されたデータベース プロジェクトを配置するようにビルド ワークフローを更新できました。 後は、このテンプレートをバージョン管理にチェックインしてビルド プロセスで使用できるようにするだけです。

バージョン管理へのテンプレートのチェックイン

ワークフローをビルド定義で使用するには、まず、バージョン管理にチェックインする必要があります。 分岐などのバージョン管理の機能を使用することもできます。 プロジェクトを分岐する場合にワークフローを分岐できます。

  1. ワークフローを保存し、デザイナーを閉じます。

  2. ソース管理エクスプローラーで、新しいテンプレートを右クリックし、[保留中の変更をチェックイン] をクリックします。

    [チェックイン] ダイアログ ボックスが表示されます。

  3. (省略可能) チェックイン コメントや、変更に関する追加情報を指定できます。 詳細については、次のトピックを参照してください。

  4. [チェックイン] をクリックします。

これで、このチュートリアルで作成したカスタム ワークフローを使用するビルドを定義できるようになりました。 詳細については、「方法 : Team Foundation ビルドを使用して変更を配置する」を参照してください。

次の手順

次に、カスタマイズしたテンプレートをテストする必要があります。 詳細については、「方法 : Team Foundation ビルドを使用して変更を配置する」を参照してください。

参照

処理手順

方法: VSDBCMD.EXE を使用してコマンド プロンプトからデータベースの配置を準備する

方法 : 新規または既存のデータベースに変更を配置する

概念

データベースのビルドおよび配置の概要

履歴の変更

日付

履歴

理由

2010 年 7 月

このトピックは、Team Foundation ビルドを使用してデータベースを配置するカスタム ワークフローの作成方法を説明するために追加されました。

情報の拡充