チーム ビルドから追加のチーム ビルドを手動でトリガーするにはどうすればよいですか? たとえば、CC.Net にいたとき、特定のビルドが成功すると、他のビルドがトリガーされました。2 番目のビルドは、このコンポーネントを使用するプロジェクトか、同じコンポーネントの長時間実行される追加のテスト ライブラリのいずれかです。
Mark
質問する
2429 次
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:"Your Build Definition To Run"" />
</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 に答える