您将如何从团队构建中手动触发其他团队构建?例如,当我们在 CC.Net 中时,如果某些构建成功,则会触发其他构建。第二个构建可以是使用此组件的项目,也可以是用于同一组件的其他长时间运行的测试库。
Mark
问问题
2429 次
2 回答
4
一种方法是您可以为 TFSBuild.proj 文件添加一个 AfterEndToEndIteration 目标,该文件将运行 TfsBuild.exe 命令行以启动其他构建。我在想这样的事情(虽然我没有测试过)
<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 回答