使用Team Build 2010进行主要构建

5
我已经为我们的产品设置了多个功能的构建定义。我想知道如何使用现有的定义创建“主构建”。
更具体地说,在MSBuild中,我可以使用目标来调用另一个MSBuild项目。这样,我可以链接构建定义以获得最终的主构建脚本。在TB 2010中,我该如何做呢?
注意:我想使用WF4,而不是MSBuild!
1个回答

4
你可以编写一个工作流自定义活动,将构建排队到构建定义中。该活动应该是代码活动,并接受您想要排队的构建定义的名称。
为了编写与您的TFS服务器交互以排队构建的代码,您可以使用Microsoft.TeamFoundation.Build.Client程序集的API。此外,Jim Lamb在这里博客中介绍了创建用于构建的自定义活动。
具体而言,您的代码应执行以下步骤:
  1. 创建TfsTeamProjectCollection对象以连接到您的团队项目集。
  2. 获取IBuildServer对象。这是主入口。从这里,您可以获取构建定义、创建构建请求、排队构建等。

当我尝试搜索“tfs programmatically queue|create a build”时,我实际上很惊讶没有2010版本的示例。我可能会在博客中谈论这个问题。

需要注意的一件事是,从自定义活动排队的构建将由构建服务帐户排队,因此您需要确保该帐户被授予正确的权限以排队构建。默认情况下,当它添加到TFS Build Services Accounts组时,我认为它没有。

更新:

Ewald Hofman刚刚写了一系列关于TFS Build的文章,其中之一讨论了如何在自定义活动中进行模拟操作。这非常适合您的需求:

http://www.ewaldhofman.nl/post/2010/05/28/Customize-Team-Build-2010-e28093-Part-9-Impersonate-activities-(run-under-other-credentials).aspx

我还发现Taylor Lafrine在他的博客文章中于2009年提到了编程创建构建的方法:

http://blogs.msdn.com/b/taylaf/archive/2009/12/04/introducing-tfs-impersonation.aspx

希望有所帮助。

@Duat Le,你知道当我排队很多构建任务时该怎么办吗?每个构建任务都依赖于另一个构建任务。我的问题是,这些构建任务是异步排队的,但我想等待一个构建任务完成后再进行下一个构建任务。你有什么想法吗? - Rookian
你可以阻塞排队构建的线程,并等待构建完成。你需要获取 IQueuedBuild 对象并等待其 Status 属性变为 Completed 或 Canceled。请注意,构建请求可能会被延迟,因此也要留意这一点,你可以选择等待或取消,以防构建请求被延迟。 - Duat Le

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接