ビルド プロセスに既定のテンプレートを使用

既定テンプレート (TFVC アイコン TfvcTemplate.12.xaml または Git アイコン GitTemplate.12.xaml) を使用すると、コードをビルドおよびテストする基本プロセスを簡単に定義できます。 必要に応じて、Team Foundation ビルド (TFBuild) によるコードのビルド方法、テストの実行方法、およびスクリプトなどのその他のプロセスの実行方法を制御することもできます。

作業の開始

  1. (省略可能) 新しいビルド定義を作成する前に、チーム エクスプローラーのホーム ページ (キーボード: Ctrl + 0、H) でビルドするソリューションを開き、それが [プロジェクト] ボックスで自動的に指定されるようにします。

  2. チーム エクスプローラーで、チーム プロジェクトに接続されていることを確認し (キーボード: Ctrl + 0、C)、[ビルド] ページを開きます (キーボード: Ctrl + 0、B)。

  3. [ビルド定義の新規作成] リンクをクリックするか、ビルドを選択してそのコンテキスト メニューを開き、[ビルド定義の編集] をクリックします。

    ヒント

    TF225001 エラー メッセージが表示された場合は、ビルド コントローラーを構成します

  4. [プロセス] タブの [ビルド プロセス テンプレート] では、既定テンプレートが既定で選択されています。

    既定テンプレートのビルド プロセス

    注意

    Visual Studio Online にホストされている Git アイコン Git チーム プロジェクトに接続していますか。[オーバーライドのチェックアウト][プロジェクト] パラメーターが見つかりませんか?

    誤った Git の既定テンプレートのパラメータ

    「Visual Studio Online で正しい既定の Git ビルド プロセス テンプレートを使用していることを確認する方法」を参照してください。

  5. このトピックで後述する情報を使用して、このビルド定義に含める機能を提供するフィールドを設定します。

  6. [プロセス] タブでフィールドを設定したら、他のタブでビルド プロセスのオプションを指定します。

    詳細については、「ビルド定義の作成または編集」を参照してください。

目的に合ったトピックをクリックしてください

  • コードを取得する

  • コードをビルドする

    • ビルドするプロジェクトを指定する

    • ビルドするプラットフォームと構成を指定する

    • ビルド オプションを指定する

  • コードをテストし、テストの影響を分析する

  • ビルド中に他のプロセスを実行する

  • サーバーがビルドを実行する方法を制御する

    • ビルドを処理するビルド エージェントを指定する

    • ビルド エージェントの制限時間を指定する

  • ビルド結果を制御する

    • ビルド出力の場所を指定する

    • 完了したビルドの名前をチームに役立つものにする

    • ビルドからシンボルを発行する

    • 作業項目の関連付けと作成を行う

    • 失敗時に作業項目を作成

    • ソース コードにラベルを付ける

  • 一般的な質問とその回答

コードを取得する

[ソース設定] タブでは、指定したソース コードをビルド エージェントが取得する方法に関するオプションをいくつか設定できます。

目的

設定するパラメーター

説明

ビルドを処理する前にビルド エージェントのワークスペースまたは Git リポジトリを消去するかどうかを指定する

TFVC アイコン TFVC: [クリーン ワークスペース]

Git アイコン Git: [クリーン リポジトリ]

ビルドを処理する前に既存の出力ファイルおよびソース コード ファイルをすべて削除する場合は、[True] を選択します。 ビルド プロセスの問題を可能な限り徹底的に検出するコンパイル プロセスを実行する場合は、これを選択します。

ヒント

ビルド プロセスにクリーンなワークスペースまたはリポジトリが必要ない場合は、このパラメーター値を [False] に設定することで、ビルドの実行に必要な時間を大幅に短縮できます。

ホスト ビルド コントローラー を使用した場合、この設定には効果がありません。 この場合は、ビルドのたびに新しい作業ディレクトリが作成されます。

ソース コードの特定のバージョンをビルドする

TFVC アイコン TFVC: [バージョンを取得する]

Git アイコン Git: [オーバーライドのチェックアウト]

TFVC: ビルドするバージョンを示すバージョン指定を指定します。

Git: チェックアウトする分岐またはコミット ID を指定します。

コードをビルドする

コードのコンパイルに MSBuild を使用できます。

ビルドするプロジェクトを指定する

[ビルド プロセス パラメーター] テーブルの [ビルド] の下の [プロジェクト] ボックスでは、ビルドするソリューションまたはコード プロジェクトを 1 つまたは複数指定できます。 少なくとも 1 つのソリューションまたはプロジェクトを指定する必要があります。

関連する複数のプロジェクトをビルドする場合、通常は、それらのプロジェクトを 1 つのソリューションに追加し、[プロジェクト] セルに個々のプロジェクトを追加する代わりに、そのソリューションを指定します。

[プロジェクト] ボックスで、省略記号ボタン (...) を選択して、[ソリューション/プロジェクト] ダイアログ ボックスを開き、ビルドするソリューションまたはプロジェクトを指定します。

TFVC チーム プロジェクトで [プロジェクト] ボックスに手動で入力するには、ビルドする個々のプロジェクトまたはソリューションの完全なバージョン管理パスを指定します。 次の例に示すように、各値をコンマで区切ります。

$/Features/FeatureA/Server/All Server Projects.sln、$/Features/FeatureA/Client/All Client Projects.sln

重要

TFVC を使用する場合は、各プロジェクトまたはソリューションへのパスが、ビルド定義の [ソース設定] タブに表示される、いずれかの [ソース管理フォルダー] 値の子であることを確認します。Git を使用する場合は、プロジェクトまたはソリューションが、ビルドしている分岐の Git リポジトリ内にあることを確認します。

ビルドするプラットフォームと構成を指定する

[構成] ボックスでは、ビルドするプラットフォームおよび構成を指定できます。 たとえば、このボックスに Release|x86 を追加することにより、このビルドで C++ プロジェクトの 32 ビット バージョンのリリース構成だけをビルドするように指定できます。

ヒント

大きなコードベースがある場合は、必要な構成およびプラットフォームだけをビルドすることにより、ビルドの処理速度を大幅に高めることができます。

[構成] ボックスを空のままにすると、各ソリューションまたはプロジェクトに定義されている既定の構成とプラットフォームがビルドされます。

[構成] ボックスで、省略記号ボタン (...) を選択して、[構成] ダイアログ ボックスを開き、ビルドする項目を指定します。 ビルドする項目を手動で指定することもできます。

[構成] ボックス内の各構成は、次の形式に従っている必要があります。

構成|プラットフォーム

次のプレースホルダーを置き換える必要があります。

  • 構成は、[デバッグ]、[リリース]、[すべての構成] などの値です。

  • プラットフォームは、[Win32]、[x86]、[x64]、[Any CPU] などの値です。

リスト内の構成はコンマで区切る必要があります。

たとえば、C# プロジェクトのデバッグ構成とリリース構成の両方をビルドする場合は、[構成] ボックスに「デバッグ|Any CPU, リリース|Any CPU」と指定します。

構成とプラットフォームに使用するトークンは、ソリューション プロパティまたはコード プロジェクト プロパティに設定されているトークンと一致している必要があります。 トークンが一致していない場合、ビルドの完了時に予期しない結果になる可能性があります。

注意

ソリューション ファイルの代わりに個々のコード プロジェクトをビルドしていて、"Any CPU" をプラットフォームとして指定する場合は、[Any CPU] ではなく [AnyCPU] として指定する必要があります。

ビルド オプションを指定する

複数のビルド オプションを制御できます。

目的

設定するパラメーター

説明

リビルドするかどうかを制御する

[ビルド][クリーン ビルド]

コード プロジェクトのすべてのコードをリビルドする場合は、[True] に設定します。 これは MSBuild /target:clean と同じです。 このオプションは、[クリーン リポジトリ][False] に設定しない限り、実際の効果はありません。

ヒント

このオプションを [False] に設定すると、非常に大きなコードベースのビルドに必要な時間を大幅に短縮できます。

レイヤー図と照らし合わせてコードを検証する

[ビルド][詳細設定][MSBuild 引数]

このパラメーター値に /p:ValidateArchitecture=true を追加します。

詳細については、「レイヤー図を使用したコードの検証」を参照してください。

MS Build に渡すコマンド ライン引数を指定します。

[ビルド][詳細設定][MSBuild 引数]

ビルド プロセスで MSBuild に引数を渡す必要がある場合は、[MSBuild 引数] パラメーターに引数を入力します。 詳細については、「MSBuild コマンド ライン リファレンス」を参照してください。

ビルドの処理に使用する MSBuild バージョンのビットを指定する

[ビルド][詳細設定][MSBuild プラットフォーム]

次のいずれかの値を指定します。

  • ビルド エージェントにインストールされているものと同じ Team Foundation ビルド サービス の CPU ビットで MSBuild を実行する場合は、Auto を指定します。

  • このビルドを常に MSBuild の 32 ビット バージョンで処理する場合は、X86 を指定します。

    Visual Studio は 32 ビット アプリケーションとして実行されるため、Team Foundation ビルド サービス の 64 ビット バージョンを実行するビルド エージェントでビルドを処理すると、問題が発生することがあります。 このような問題は、X86 を指定することによって解決される場合があります。

この値を指定する場合は、ビルドが 64 ビット ビルド コンピューターでホストされたビルド エージェントによって処理されることを (このトピックで前述した手順でタグを使用するなどの方法で) 確認してください。 それ以外のビルド エージェントで処理された場合、ビルドは失敗します。

他のプロセスを実行する

ビルド中に他のプロセスを実行できます。

コード分析を実行する

ビルド中に一般的な問題を検出するには、コードを分析します。 詳細なビルド パラメーターの [コード分析の実行] パラメーターを設定します。

  • この機能が有効に設定された各コード プロジェクトを分析するには、[設定時] をクリックします。

  • この機能がコード プロジェクトで有効になっているかどうかにかかわらず、すべてのコード プロジェクトを分析する場合は、[常に行う] をクリックします。

  • コード分析をスキップする場合は、[使用しない] をクリックします。

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

サーバーがビルドを実行する方法を制御する

ビルド サーバーがビルドを実行する方法を制御できます。

ビルドを処理するビルド エージェントを指定する

ビルドの処理に使用するビルド エージェントを指定するには、[詳細設定] ノードを展開し、さらに [エージェントの設定] ノードを展開し、次のパラメーターに値を指定します。

  • [名前フィルター]: このフィールドにエージェントの名前を入力することにより、このビルド定義の処理に使用するビルド エージェントをフィルター処理できます。 ワイルドカード文字の *? を使用して名前のセットを指定することもできます。 たとえば、「CI*」と入力すると、名前が CI で始まるエージェントを指定できます。 この条件に合致するエージェントには、CI、CI1、CI_Agent2 などがあります。

  • [タグ フィルター]: 一致するタグを持つビルド エージェントだけがこのビルドを実行するように、1 つ以上のタグを指定します。 通常は、特定のビルド エージェントにタグを適用して、特殊な目的のためにそれらのビルド エージェントを予約します。 たとえば、ビルド コンピューターで、ゲート チェックイン ビルドを処理するためのビルド エージェントを設定します。 このビルド エージェントにゲーティングされたタグを適用します。 最後に、ゲート タグをビルド定義に適用し、そのビルド定義が同じゲート タグを持つエージェントによってのみ処理されるようにします。 タグを指定するには、省略記号ボタン ([...]) を選択します。

    注意

    このビルドの処理に使用できるビルド エージェントのプールは、このビルド定義に指定したビルド コントローラーによって決まります。ビルド コントローラーを変更するには、[ビルドの既定値] タブを選択し、[ビルド コントローラー] メニューを開いて、ビルド コントローラーを選択します。

  • [タグ比較演算子]: メニューで、次のいずれかの値を選択します。

    • [MatchExactly]: [タグ フィルター] ボックスで指定したタグ セットと厳密に同じタグ セットを持つビルド エージェントによってのみこのタグ定義を処理する場合は、この値を選択します。 タグを指定しない場合、どのエージェントでもこのビルド定義を処理できます。

      ヒント

      [MatchExactly] を選択することで、このビルド定義に使用できるエージェントを、[タグ フィルター] フィールドに指定されたタグ セットと厳密に同じタグ セットを持つエージェントのみに制限します。

    • [MatchAtLeast]: 少なくとも [タグ フィルター] ボックスで指定したタグ セットと同じタグ セットを持つすべてのビルド エージェントによってこのタグ定義を処理する場合は、この値を選択します。 タグを指定しない場合、タグを持たないエージェントだけがこのビルド定義を処理できます。

ビルド エージェントの制限時間を指定する

制限時間を指定するには、[詳細設定] ノードを展開し、さらに [エージェントの設定] ノードを展開して、次の表に示すパラメーターを指定します。

目的

設定するパラメーター

説明

ビルド エージェントがビルドの処理に使用できる最大時間を指定します。

最大実行時間

時間間隔の値を hh:mm:ss の形式で入力します。 たとえば、制限時間として 04:30:15 を指定し、ビルド エージェントの処理が 4 時間 30 分 15 秒後に完了しなかった場合、ビルドはタイムアウト エラーで失敗となります。 ビルド エージェントによるビルドの処理に制限時間を設定しない場合は、00:00:00 を指定します。

ビルド要求をビルド エージェントに割り当てるまでの許容される最大時間を指定します。

最大待機時間

時間間隔の値を hh:mm:ss の形式で入力します。 たとえば、最大待機時間として 01:30:45 を指定し、1 時間 30 分 45 秒以内にビルドがビルド エージェントに割り当てられなかった場合、ビルドはタイムアウト エラーで失敗となります。 ビルド コントローラーがこのビルド定義を処理するビルド エージェントを検索する時間に制限を設けない場合は、00:00:00 を指定します。

ビルド結果を制御する

ビルド出力の場所を指定する

TFBuild がビルド出力を配置する場所を制御するには、次のいずれかのオプションを選択します。

  • [SingleFolder]: すべてのビルド出力ファイルをドロップ フォルダーにまとめて配置する場合に選択します。

  • [PerProject]: [プロジェクト] ボックスで指定したソリューションまたはコード プロジェクトごとにビルド出力をドロップ フォルダー サブフォルダーにグループ化する場合に選択します。

  • [AsConfigured]: ビルド エージェントのソース フォルダーのバイナリをそのままにしておき、開発用コンピューター上で Visual Studio でコードをビルドするときと同じサブフォルダー構造に整理されるようにする場合に選択します。 この構造は、コード プロジェクトで定義します。

    このオプションを使用する場合、TFBuild はドロップ フォルダーに出力をコピーしません。 代わりに、TF_BUILD_BINARIESDIRECTORY で指定した場所に出力をコピーして、出力がステージング場所にドロップされるようにスクリプトをプログラミングできます。 ビルド後のスクリプトまたはテスト後のスクリプトを参照してください。

完了したビルドの名前をチームに役立つものにする

チームは、[詳細設定][ビルド番号形式] を使用して、完了した各ビルドの名前に有用なデータを読み込むことができます。 このパラメーターの有効な値については、「完了したビルドにわかりやすい名前を付けるためにビルド番号を使用」を参照してください。

ビルドからシンボルを発行する

シンボル データを発行してデバッグ履歴などの機能を有効にするには、[シンボルを発行するためのパス] パラメーターをインデックスに指定します。 「シンボル データのインデックス作成および発行」を参照してください。

変更セット、コミット、および作業項目を関連付ける

ビルド プロセスにより、完了した各ビルドが、コードに追加されたすべての変更セットまたはコミットとそれらに関連付けられた作業項目に自動的にリンクされます。 この動作を無効にすることはできませんが、[詳細設定][True] または [False] を選択することで、[ビルド番号で作業項目を更新] を行うかどうかを決定できます。

ビルド プロセスが変更セット、コミット、作業項目を関連付けるタイミングを決定する方法

失敗時に作業項目を作成

ビルドが失敗したときにバグを作成し、TFVC アイコン TFVC 変更セットのチェックインまたはGit アイコン Git コミットのプッシュを行ったユーザーに割り当てるようにする場合は、[詳細][失敗時に作業項目を作成][True] を選択します。

ソース コードにラベルを付ける

完了したビルドに含まれている各ファイルのバージョンをチームが容易に識別できるように、すべてのソース コード ファイルにラベルが付ける場合は、TFVC アイコン [TF バージョン管理][ソースのラベル作成][True] を選択します。 この設定は、Git アイコンGit チーム プロジェクトには適用されません。

TFBuild でのラベルするバージョンの決定方法の詳細については、「How good was that build (ビルドの品質)」を参照してください。

Q & A

Visual Studio Online で正しい既定の Git ビルド プロセス テンプレートを使用していることを確認する方法

Visual Studio Online にホストされている Git アイコン Git チーム プロジェクトに接続していますか。 [オーバーライドのチェックアウト][プロジェクト] パラメーターが見つかりませんか?

詳細を表示すると、[既定テンプレート (GitTemplate.xaml)] が表示されますか?

誤った Git の既定テンプレート

表示される場合は、[GitTemplate.12.xaml] を選択します。 この操作を行うと、[オーバーライドのチェックアウト] パラメーターと、[プロジェクト] パラメーターの参照ボタンが表示されます。

適切な Git の既定のテンプレート

Q: ビルド プロセスが変更セット、コミット、作業項目を関連付けるタイミングを決定する方法

A: 各ビルド定義には、次の完了したビルドに関連付ける変更セット (TFVC)、コミット (Git)、および作業項目を示す固有のレコードがあります。

たとえば、変更セット 382 は Build A と Build B の両方でビルドされるとします。 Build A はキューに配置され、正常に完了しました。 Build B はキューに配置され、失敗しました。 この場合、変更セット 382 は、現在、Build A の正常に完了したビルドと Build B の失敗したビルドにリンクされています。この変更セットは、Build A の次の完了したビルドにはリンクされませんが、Build B の次の完了したビルドにはリンクされます。

TFBuild での関連付けるバージョンの決定方法の詳細については、「How good was that build (ビルドの品質)」を参照してください。

Q: 他のことを行うためにビルド プロセスが必要です。どのようにカスタマイズするのですか。

A: プロセスをカスタマイズします。