7

Visual Studio (2008 または 2005) から TFS ビルドを監視している場合、それがどこまで進んでいるかを確認できます。

問題は、ビルド後のカスタム ステップがいくつかあることです。開発者が UI を通じて直接確認できるようにしたいと考えています。これらのステップには時間がかかり、ビルドステップの「タイミング」も取得できます。

それを表示する方法はありますか?

4

2 に答える 2

9

これは、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 に設定しました。ステップ中にエラーが発生した場合は、そのステップのステータスを「失敗」に設定します。

幸運を、

マーティン。

于 2008-10-22T18:42:20.317 に答える
0

@Martin Woodward の素晴らしい例では、PackageBinaries が既存のTFS ビルド ターゲットの 1 つであることに注意してください。独自のターゲットを使用する場合は、CallTargetタスクを使用して既知のターゲットの 1 つからそれらを呼び出すことができます。

<Target Name="AfterDropBuild">
    <CallTarget Targets="CreateDelivery"/>
    <CallTarget Targets="CreateInventory"/>
</Target>

次に、ターゲット (CreateDelivery など) で、Martin の例に従って BuildStep タスクを使用します。

于 2011-12-08T17:31:17.043 に答える