Visual Studio (2008 または 2005) から TFS ビルドを監視している場合、それがどこまで進んでいるかを確認できます。
問題は、ビルド後のカスタム ステップがいくつかあることです。開発者が UI を通じて直接確認できるようにしたいと考えています。これらのステップには時間がかかり、ビルドステップの「タイミング」も取得できます。
それを表示する方法はありますか?
Visual Studio (2008 または 2005) から TFS ビルドを監視している場合、それがどこまで進んでいるかを確認できます。
問題は、ビルド後のカスタム ステップがいくつかあることです。開発者が UI を通じて直接確認できるようにしたいと考えています。これらのステップには時間がかかり、ビルドステップの「タイミング」も取得できます。
それを表示する方法はありますか?
これは、TFS 2008 でビルド レポートにステップを追加するために通常使用するパターンです (チーム ビルドの講演で通常使用する完全な例については、http://code.msdn.microsoft.com/buildwallboard/を参照してください)。
基本的に、TFS2008 には「BuildStep」と呼ばれるカスタム タスクが用意されているという魔法があります。以下は、MSI インストーラーを生成し、レポートで適切なビルド手順をビルドするセクションです。
<Target Name="PackageBinaries">
<!-- create the build step -->
<BuildStep TeamFoundationServerUrl="$(TeamFoundationServerUrl)"
BuildUri="$(BuildUri)"
Message="Creating Installer"
Condition=" '$(IsDesktopBuild)' != 'true' " >
<Output TaskParameter="Id"
PropertyName="InstallerStepId" />
</BuildStep>
<!-- Create the MSI file using WiX -->
<MSBuild Projects="$(SolutionRoot)\SetupProject\wallboard.wixproj"
Properties="BinariesSource=$(OutDir);PublishDir=$(BinariesRoot);Configuration=%(ConfigurationToBuild.FlavourToBuild)" >
</MSBuild>
<!-- If we sucessfully built the installer, tell TFS -->
<BuildStep TeamFoundationServerUrl="$(TeamFoundationServerUrl)"
BuildUri="$(BuildUri)"
Id="$(InstallerStepId)"
Status="Succeeded"
Condition=" '$(IsDesktopBuild)' != 'true' " />
<!-- Note that the condition above means that we do not talk to TFS when doing a Desktop Build -->
<!-- If we error during this step, then tell TFS we failed-->
<OnError ExecuteTargets="MarkInstallerFailed" />
</Target>
<Target Name="MarkInstallerFailed">
<!-- Called by the PackageBinaries method if creating the installer fails -->
<BuildStep TeamFoundationServerUrl="$(TeamFoundationServerUrl)"
BuildUri="$(BuildUri)"
Id="$(InstallerStepId)"
Status="Failed"
Condition=" '$(IsDesktopBuild)' != 'true' " />
</Target>
最初に、ビルド ステップを作成し、ステップの ID を InstallerStepId というプロパティに保存します。タスクを実行した後、そのステップのステータスを Succeeded に設定しました。ステップ中にエラーが発生した場合は、そのステップのステータスを「失敗」に設定します。
幸運を、
マーティン。
@Martin Woodward の素晴らしい例では、PackageBinaries が既存のTFS ビルド ターゲットの 1 つであることに注意してください。独自のターゲットを使用する場合は、CallTargetタスクを使用して既知のターゲットの 1 つからそれらを呼び出すことができます。
<Target Name="AfterDropBuild">
<CallTarget Targets="CreateDelivery"/>
<CallTarget Targets="CreateInventory"/>
</Target>
次に、ターゲット (CreateDelivery など) で、Martin の例に従って BuildStep タスクを使用します。