1. TFS Build 简介
在团队项目开发中,编译常常是一个很困难的事情!
可能你会反问编译有什么难的?不就是右键,然后点击 Build/Rebuild, 或者直接按 F5 么?这都不会,真不知道你是怎么混的!强烈鄙视之!
不急,我们慢慢的探究一下个中真味。首先,我们都同意在团队开发中,源代码的版本管理是必要且重要的。
那么如果我们要实现一下功能,可就不轻松了?
- 确保每个程序员提交的代码都是可编译的,也就是说如果最新代码不能编译则不能提交。
- Daily Build/Weekly Build (每日/周的编译) , 我们希望可以每天编译出最新的代码,然后放到一个共享目录下,以方便测试团队进行 Smoking Test以确保核心功能不受影响,并且根据最新功能设计,实现测试用例 (Test Case).
- 在不同的平台上进行编译,可能某些程序(依赖于比较老的 COM)只能在x86平台上运行,有些却没有要求。
- 要求在Build 时运行单元测试用例,确保基础性的方法(Method)可以工作或者流程性功能(Business logic)正确实现。
实际编译中的问题可能远远超出了上述情况且项目规模越大编译难度越大,这也就为什么大的项目都有专门的编译/部署人员/团队。比如我曾经经历过一个 C++项目,需要在将近48个非 Windows(Non-Windows) 平台上每天进行编译以便进行测试,如果没有自动化的机制,恐怕需要的编译人员要比开发人员还多。
面对这些编译工作中的挑战,TFS 提供了Build Process 并且提供了模版。这些可以帮助我们解决 Build 过程中的很多问题。
那么就让我们开始揭开 TFS Build的什么面纱吧!
2. TFS Build 架构图
3. TFS Build 流程图
4. 创建 TFS Build 定义
首先你必须有权限创建一个Build 定义,并且通过Visual Studio 2012/2010 连接到TFS 服务器。
- 右击 Team Explorer, 点击 Builds
- 点击 New Build Definition
- 在 Build definition name 框中输入一个名字,并且在Description 中给予简单的描述。
- 对于Queue Processing,如果此 Build Definition 没有准备好发布给 team 使用,那么你可以把它的状态由 Enabled 改为:
- Pause: TFS 将新的Build 请求加入到队列中,并且把其状态标识为 Pause.
- Disabled: TFS 将拒绝新的Build 请求加入队列中。
- 点击 Trigger 标签,在此标签页中设置触发此 Build Definition 的事件,对其设置选项做一下解释:
- Manual – Check-ins do not trigger a new build--手动执行。最原始也是最保险和有效的方式。
- Continuous Integration – Build each check-in--持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件。使用该选项,每次提交/签入代码都会把一个新的 Build 加入队列,这种通常使用与向TFS Server 提交完成某个或某几个模块功能,试想一下如果你只是改了一个 if 的条件,提交代码却出发整个Build 过程多不划算在实际操作中通常用户由 TFS branch 向主干(trunk) 提交代码时。此提交过程通常是由专门人员完成而不是每个程序员,这样做可以减少因认为操作而引起的风险。
- Rolling Builds – accumulate check-ins until the prior build finishes--同Continuous Integration 类似,当 Continuous Integration 提交代码等待时间过长(通常都很长),使用该选项。采用此选项时,如果当前没有 Build 在运行,则启动 Build, 在Build 结束后,把在Build 运行期间所有的 check-in 累积到下一个 Build 时运行。并且可以对 Build 频率进行限制,勾选并填写来制定运行频率 Build no more often that every _0~214748367_ minute,在本示例里我们设置每个小时运行一次Build。
-
- Gated Check In – accept check-ins only if the submitted changes merge and build successfully。采用此选项确保项目编译成功。如果你提交的代码导致项目编译失败则 TFS server 将拒绝你提交代码。Get Latest Code 开开心心的 Coding, 可是你却发现项目Build 失败了,然后一堆的红色错误让你心情烦躁,于是你花了半个小时让他可以 Build 成功,可是那个改代码的哥们来了以后说你不能改,因为你影响了他的代码功能。多么糟糕的一天,大大影响了工作效率,于是乎下班不能回家打游戏只能加班了。所以采用此选项确保代码可以编译,大家各自完成各自的功能,互不干扰。
- Schedule -- build every week on the following days。首先来认识一下大名鼎鼎的BVT(Build Version Test),它是一个常规的 test 用来评估代码编译的质量,通常只包含对核心功能,基础功能进行测试的代码,也可以认为是对一个Build 的 Smoking Test。使用此选项可以帮助你自动的在你睡觉的时候完成 Build 和运行 BVT test suites/cases。省时省力省钱。
- 点击Source Setting 标签页,设置要Build 的项目为Active。
- 点击 Build Defaults 选项卡, 设置 Build Controller 和设置 Build 的文件所放的位置。
- 点击 Process,定义 Build 的项目,项目设置,Test Run, Build Agent 的设置等。
- 点击 Retention Policy, 设置你想要保留的 Build 的个数和信息。
- Ctrl + S 保存。