5

チーム ビルドから追加のチーム ビルドを手動でトリガーするにはどうすればよいですか? たとえば、CC.Net にいたとき、特定のビルドが成功すると、他のビルドがトリガーされました。2 番目のビルドは、このコンポーネントを使用するプロジェクトか、同じコンポーネントの長時間実行される追加のテスト ライブラリのいずれかです。

4

2 に答える 2

4

これを行う 1 つの方法は、TfsBuild.exe コマンド ラインを実行して他のビルドを開始する TFSBuild.proj ファイルに AfterEndToEndIteration ターゲットを設定することです。私はこのようなことを考えています(私はそれをテストしていませんが)

  <Target Name="AfterEndToEndIteration">

    <GetBuildProperties TeamFoundationServerUrl="$(TeamFoundationServerUrl)"
                        BuildUri="$(BuildUri)"
                        Condition=" '$(IsDesktopBuild)' != 'true' ">
      <Output TaskParameter="Status" PropertyName="Status" />
    </GetBuildProperties>

    <Exec Condition=" '$(Status)'=='Succeeded' "
          Command="TfsBuild.exe start /server:$(TeamFoundationServerUrl) /buildDefinition:&quot;Your Build Definition To Run&quot;" />

  </Target>
于 2008-10-10T15:33:09.973 に答える
3

私はマーティンが何度も提案したのと同じことをしました(彼のブログは役に立たない、ところで)。ただし、(他のいくつかの複雑なルールに基づいて)このようなカスケードビルドをトリガーする必要が生じたため、カスタムタスクを作成してそれを実行しました。ビルドスクリプトを適切で無駄のないものに保ち、柔軟性とカプセル化の可能性を高めます。

    public override bool Execute()
    {       
        IBuildDefinition[] buildDefinitions = BuildServer.QueryBuildDefinitions(ProjectName);

        foreach (IBuildDefinition build in buildDefinitions)
        {
            if(build.Enabled) //I did a bunch of custom rules here
            {
                Log.LogMessage(String.Concat("Queuing build: ", build.Name));
                BuildServer.QueueBuild(build);
            }
        }

        return true;
    }

Aaron Hallbergのブログにももっと良いものがあります:

http://blogs.msdn.com/aaronhallberg/archive/2007/04/24/team-build-object-model-queueing-a-build.aspx

于 2008-11-14T17:53:55.770 に答える