ビルド ワークスペースの使用

更新 : 2011 年 5 月

ビルド処理では、ビルド エージェントがソース ファイルのコンパイルと他の操作を行います。 ビルド エージェントは、この操作を行う前に、バージョン コントロール サーバー上のフォルダーからローカル作業ディレクトリにファイルをダウンロードします。 これらのファイルをダウンロードしやすくするため、ビルド エージェントはサーバー上のフォルダーをビルド エージェントの作業ディレクトリ内のローカル フォルダーにマップするバージョン コントロール ワークスペースを作成します。

ビルド ワークスペースが果たす役割

ビルド処理の開始前

手順 1. ビルド システムで、各ビルド エージェントの作業ディレクトリを設定します。 詳細については、「ビルド エージェントの作成と使用」を参照してください。

手順 2. ビルド定義を作成するときは、[ワークスペース] タブで、ダウンロードするファイルが存在するフォルダーと、これらのフォルダーをビルド エージェント上のローカル フォルダーにマップする方法を指定します。

ビルド処理中

手順 3. ビルド処理は、ワークスペースの仕様を CreateWorkspace アクティビティ ワークフロー アクティビティに渡して、その作業ディレクトリ内でワークスペースを作成します。

手順 4. ビルド処理は、DownloadFiles アクティビティ アクティビティを使用してファイルをワークスペースにダウンロードします。 この手順の後、ビルド エージェントはそれらのファイルを操作 (コンパイルなど) です。

ビルド定義のワークスペースの設計

ビルド定義のワークスペースを設計するときは、いくつかのベスト プラクティスに従う必要があります。

必要なフォルダーをすべて含める。

必ず、ビルド処理に必要なファイルが存在するすべてのフォルダーを含めてください。 たとえば、[プロセス] タブの [ビルドする項目] フィールドに別のソリューションを追加する場合、場合によってはワークスペースに別のマッピングを追加する必要があります。

必要なフォルダーのみ含める。

ビルド処理に必要なフォルダーのみ、[状態][アクティブ] にしてマップします。 マップされたフォルダーのサブフォルダーに、ビルド処理に必要ないファイルが含まれている場合、[状態] の値を [クローク] にしてマップします。 多くの状況では、ビルド定義を作成するとき、チーム プロジェクトのルート フォルダーがワークスペースでマップされます。 この構成では、ビルド エージェントが、チーム プロジェクトのバージョン コントロール フォルダーですべてのファイルをダウンロードします。 このフォルダーに多くのデータが存在する場合、必要のないデータが大量にダウンロードされるため、ビルドでビルド システム リソースが浪費され、ビルド処理の速度が低下する可能性があります。

[プロセス] タブの [ビルドする項目] フィールドから項目を削除するときは、ワークスペースから削除できるマッピングを探します。

$(SourceDir) トークンを使用して、サーバー フォルダーを .. \Sources サブディレクトリのローカル フォルダーに対マップする。

ほとんどの場合、ビルド エージェント上のソース ファイルに最適な場所は、作業ディレクトリにある ..\Sources サブディレクトリの下です。 この場所は、[ビルド エージェント フォルダー] ボックスで $(SourceDir) トークンを使用することで指定できます。

チェックインによりトリガーされるビルド定義にワークスペースが与える影響に注意する。

ビルド定義の [トリガー][継続的インテグレーション][ビルドのロール]、または [ゲート チェックイン] に設定した場合、マップされたサーバー フォルダーがビルド処理にバインドされます。 たとえば、開発者が、[ゲート チェックイン] トリガーが設定されたビルド定義のワークスペースでマップされたフォルダーに変更をチェックインした場合、ビルド処理が完了するまでそれらの変更はブロックされます。

トリガーの詳細については、「ビルド トリガーと理由の指定」を参照してください。

ビルド定義ワークスペースの例

ビルド エンジニアの Roberto 氏が Storefront Nightly ビルド定義を作成しました。

ビルド定義ワークスペースの例

手順 1. このビルド定義は、$/Core/Controllers/Controllers.sln および $/Core/Viewers/Viewers.sln の 2 つのソリューションをビルドします。 そのため、これらのソリューションが存在する 2 つのフォルダー、それらのフォルダーが含まれるプロジェクト、および必要な他のすべてのファイルをマップする必要があります。

手順 2. ビルド処理の効率を上げるため、Roberto 氏はビルド処理が必要としないドキュメント ファイルが存在するフォルダー $/Core/Viewers/Docs を除外しています。

手順 3. ソリューションは、他社のコンポーネント ライブラリに存在するいくつかのバイナリに依存しています。 これらのバイナリは、特定の物理フォルダー c:\adatum\widgets に配置することを要求する独自のメカニズムにより保護されます。

ワークスペース間でデータをコピーする

あるワークスペースから別のワークスペースにマッピングをコピーすることで、時間を節約できます。

いずれかのワークスペースからマッピングをコピーするには

  1. [既存のワークスペースのコピー] をクリックします。

  2. [コピーするワークスペースを選択] ダイアログ ボックスで、ワークスペースからマッピングをコピーします。

別のビルド定義ワークスペースまたは別のチーム メンバーのワークスペースからマッピングをコピーするには

  1. 次のいずれかの操作を実行します。

    • 別のビルド定義ワークスペースからマッピングをコピーするには、ビルド定義を開き、[ワークスペース] タブをクリックします。

    • 別のチーム メンバーのワークスペースからマッピングをコピーするには[ファイル] メニューを開いて [ソース管理] をクリックし、[ワークスペース] をクリックするようにチーム メンバーに依頼します。 ワークスペースを選択し、[編集] をクリックします。

  2. [作業フォルダー] テーブルの行を右クリックし、[すべて選択] をクリックします。

  3. [作業フォルダー] テーブルの行を右クリックし、[コピー] をクリックします。

  4. テキスト ファイルを作成し、クリップボードの内容をテキスト ファイルに貼り付けて保存します。

  5. ビルド定義を作成するか、コピーする対マッピングの対象である既存のビルド定義を変更します。

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

  6. [ワークスペース] タブで、[作業フォルダー] テーブルの行を右クリックし、[貼り付け] をクリックします。

  7. 必要に応じて、マッピングをビルド エージェントでの使用に合わせます。 特に、[ビルド エージェント フォルダー] ボックスの値が適切で、必要な場合は $(SourceDir) トークンが含まれていることを確認してください。

参照項目

ビルド定義を作成するときは、ビルド エージェント ワークスペースを定義します。 詳細については、「基本的なビルド定義の作成」を参照してください。

ビルド エージェント ワークスペースは、開発者がチーム プロジェクトでソース ファイルを操作するときに使用するバージョン コントロール ワークスペースと基本的には同じメカニズムです。 バージョン コントロール ワークスペースとビルド エージェント ワークスペースの間でマッピングをコピーできます。 バージョン コントロール ワークスペースの詳細については、「ワークスペースの作成とチーム プロジェクトの操作」を参照してください。

履歴の変更

日付

履歴

理由

2011 年 5 月

トピックを追加

情報の拡充