2009-07-10 206 views
1

我准备搬过来从VSS我的团队的源代码控制TFS 2008TFS构建架构

这是一个asp.net网站,我目前使用楠脚本和巡航控制系统的组合做所有的构建和部署。

我一直在试图围绕构建TFS构建的最佳方式来完成与NANT和Cruise Control做同样的事情,但我无法确定最佳方法。

这里是我的要求:

  1. 当代码达到某个点时,我手动标签适用于它。
  2. 这个带标签的代码需要构建并部署到我们25个不同的Dev,QA或生产环境中的任何一个。
  3. 这25个环境中的任何一个都可以位于应用程序的任何当前或过去的标签版本上。
  4. 我需要能够将任何标记版本的应用程序部署到任何环境。

我目前正在完成上述使用NANT来执行构建,并使用巡航控制只传递命令行选项为其构建和部署的环境。我有一个Nant配置文件,其中包含我所有环境的列表以及每个环境当前应该使用的相关标签。无论何时创建新标签,都会手动更新此文件。

我知道我用于NANT的方法可能不会与Team Build相同,但是任何人都可以与Team Build做类似的事情,并且可以分享如何实现它?

回答

0

要回答这个问题,我解决这个问题的方法是使用自定义构建任务,巡航控制和msbuild的组合。

自定义构建任务允许我从特定分支和标签获取最新版本。

巡航控制允许我使用配置文件将特定构建的特定信息传递给MSbuild,但是从UI启动构建。

msbuild与普通的一样使用,但是它被巡航控制系统调用,自定义构建任务完成了大部分工作。

2
  1. TFS中的标签比VSS中的标签更加健壮。当您创建标签时,您可以根据变更集,日期,工作区版本创建,甚至可以使用不同的标签。 (顺便说一句,我是抓住一个环节和整个this post来,你可能会发现相关的。)

  2. 默认情况下,团队建设将建立从源代码的最新版本,但是你可以重写“CoreGet”目标在构建中构建特定版本。 Aaron Hallberg(又名TFS的John Skeet)展示了一个例子here

  3. 看到4

  4. 我没有亲自过这种困难的要求,但我做了类似的事情。在构建队列时,可以通过几种重要方式传递任意数量的参数,1)通过响应文件和2)在队列时间(simple example here)。无论哪种情况,两个参数可以是哪个环境以及哪个标签/版本号。在我当前的项目中,我已经开启了持续集成,所以当工作区中的代码签入时,当前代码会自动标记,从响应文件中提取放置位置的细节,然后部署到相应的位置。

鉴于你有〜25度的环境和N个版本/标签的数量,你可以建立一个简单的图形用户界面,通过TFS API读取当前的标签,让你选择建立一个特定的环境下哪个版本。