1.  TFS Build 简介

在团队项目开发中,编译常常是一个很困难的事情!

可能你会反问编译有什么难的?不就是右键,然后点击 Build/Rebuild, 或者直接按 F5 么?这都不会,真不知道你是怎么混的!强烈鄙视之!

不急,我们慢慢的探究一下个中真味。首先,我们都同意在团队开发中,源代码的版本管理是必要且重要的。

那么如果我们要实现一下功能,可就不轻松了?

  1. 确保每个程序员提交的代码都是可编译的,也就是说如果最新代码不能编译则不能提交。
  2. Daily Build/Weekly Build (每日/周的编译) , 我们希望可以每天编译出最新的代码,然后放到一个共享目录下,以方便测试团队进行 Smoking Test以确保核心功能不受影响,并且根据最新功能设计,实现测试用例 (Test Case).
  3. 在不同的平台上进行编译,可能某些程序(依赖于比较老的 COM)只能在x86平台上运行,有些却没有要求。
  4. 要求在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 保存。

TFS Build Definition的更多相关文章

  1. TFS Build Definition And Auto Deploy

    一台build machine上一般只有一个build service[对应一个build controller]来serve一个team project collection,但又workaroun ...

  2. 如何用TFS build definition添加自动建立nuget package 步骤

    参考网址:https://www.visualstudio.com/en-us/docs/build/steps/package/nuget-packager https://docs.nuget.o ...

  3. TFS Build做Web应用持续集成发布的一个技巧

    由于面向接口编程的关系,许多实现往往是动态注入运行,在一个项目中直接引用实现dll编译是不合理的.通常我们会在Post Build Event中添加一些xcopy命令将运行时才需要的dll复制到输出目 ...

  4. TF42064: The build number already exists for build definition error in TFS2010

    In TFS2008, deleting a build removes it from the database itself. If you delete a build called Build ...

  5. TFS Build Silverlight项目的两个问题

    1.The Silverlight 4 SDK is not installed. 打开对应的Build Definition,Process -> Advanced -> MSBuild ...

  6. xeam Build Definition Extension uninstall 卸载

    之前在VS上装了Build definition 的扩展,后来发现很不好用,想卸载掉,就增 工具下面找add-in manager, 结果找不到,external tools下面也找不到, googl ...

  7. TFS build server搭建,搭建自动化构建服务器

    TFS build 服务器的搭建主要步骤如下: 一:环境准备: 新建一台build服务器 安装Visual Studio.主要目的是: a. 生成Build脚本所需要的build命令:b.与TFS组合 ...

  8. TFS2010单独安装配置tfs build server

    记录一下确实很磨人. 同样硬件和软件环境的两台服务器,其中一台服务器很久之前就配置好了tfs2010 build ,然后最近想再配置一台tfs build server,但是按照以前的配置流程始终提示 ...

  9. 集成TFS Build生成与SonarQube获取代码分析结果

    软件项目在开发过程中,往往由于任务重.时间紧等原因忽略软件代码的质量和规范检查,只注重软件功能的开发和交付.等软件交付上线以后,由于代码质量导致的问题会耗费开发和运维人员的大量时间.研发表明,项目上线 ...

随机推荐

  1. [UWP]UWP中获取联系人/邮件发送/SMS消息发送操作

    这篇博客将介绍如何在UWP程序中获取联系人/邮件发送/SMS发送的基础操作. 1. 获取联系人 UWP中联系人获取需要引入Windows.ApplicationModel.Contacts名称空间. ...

  2. 四种常见的App弹窗设计,你有仔细注意观察吗?

    弹窗又称为对话框,是App与用户进行交互的常见方式之一.弹窗分为模态弹窗和非模态弹窗两种,两者的区别在于需不需要用户对其进行回应.模态弹窗会打断用户的正常操作,要求用户必须对其进行回应,否则不能继续其 ...

  3. 进军swift

    swift中文文档网站 http://letsswift.com/category/swiftguide/language-guide/ Swift的优缺点 , 来自珍妮讲解~~ 优点1.简洁(不是说 ...

  4. 1.7---将矩阵元素为0的行列清零0(CC150)

    答案: import java.util.ArrayList; import java.util.List; public class Solution{ public static void mai ...

  5. 【wikioi】1033 蚯蚓的游戏问题(费用流)

    http://wikioi.com/problem/1033/ 这题也是很水的费用流啊,同之前那题一样,拆点然后建边,容量为1,费用为点权.然后建个源连第一行每个点,容量为1,费用为0,然后最后一行每 ...

  6. PIX的使用

    这几天pix的一个问题可坑死我了,之前用的时候有蓝色的链接,点过去就可以查看相应资源,后来都是黑色的了没有可以点的链接. 看文档翻来翻去也没进展,后来找到了, 先打开render那个窗口 这样even ...

  7. (转载)OC学习篇之---类的三大特性:封装,继承,多态

    之前的一片文章介绍了OC中类的初始化方法和点语法的使用,今天来继续学习OC中的类的三大特性,我们在学习Java的时候都知道,类有三大特性:继承,封装,多态,这个也是介绍类的时候,必须提到的话题,那么今 ...

  8. HashMap多线程死循环问题

    HashMap通常会用一个指针数组(假设为table[])来做分散所有的key,当一个key被加入时,会通过Hash算法通过key算出这个数组的下标i,然后就把这个<key, value> ...

  9. vim 分屏 screen

    上下分割,并打开一个新的文件. :sp filename 左右分割当前打开的文件. Ctrl+W v 左右分割,并打开一个新的文件. :vsp filename 移动光标 Vi中的光标键是h, j, ...

  10. CPU 球迷助威清理灰尘图形的全过程

    主机因为使用时间长的电源风扇,风扇轴承石油枯竭,导致拒绝或不转的风扇转速,热量使电源不能得到有效排除,往往会造成电脑死机,有几种方法来解决. 单省钱的办法例如以下: 1.把电源从主机上拆下,例如以下图 ...