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. windows下 Python 安装包的配置

    1.下载安装 Pythonpython-2.7.2.msi  http://www.python.org/download/如下载 Python 2.7.2,安装目录为 C:\Python27 2.添 ...

  2. [string]Reverse Words in a String

    Given an input string, reverse the string word by word. For example,Given s = "the sky is blue& ...

  3. JS取地址栏参数的两种方法

    第一种方法: function GetQueryString(name){ var reg = new RegExp("(^|&)"+ name +"=([^&a ...

  4. Django后台管理界面

    之前的几篇记录了模板视图.模型等页面展示的相关内容,这篇主要写一下后台admin管理界面的内容. 激活管理界面 Django管理站点完全是可选择的,之前我们是把这些功能给屏蔽掉了.记得上篇中Djang ...

  5. jchat:linux聊天程序1:简介

    做一个linux的聊天软件,虽然没什么创意,但是它可以用来锻炼和测试我对网络编程的掌握程度,也借此机会做一些有意思的程序. 这里做的是linux下一个命令行的客户端与服务器的聊天程序,没写界面,因为对 ...

  6. Go语言Eclipse开发环境配置-Windows

    1.首先安装eclipse,选择一个适合的版本就好,解压即可 http://www.eclipse.org/downloads/ 2.下载go语言安装包 官网地址 :http://www.golang ...

  7. xshell + xmanger连接centos gnome+ kde桌面 for需要X window的App

  8. Spring、Spring事务详解;使用XML配置事务

    @Transactional可以设置以下参数: @Transactional(readOnly=false) // 指定事务是否只读的 true/false @Transactional(rollba ...

  9. [zoj 3774]Power of Fibonacci 数论(二次剩余 拓展欧几里得 等比数列求和)

    Power of Fibonacci Time Limit: 5 Seconds      Memory Limit: 65536 KB In mathematics, Fibonacci numbe ...

  10. java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/LoopTag

    异常原因:缺少jstl.jar包.一般在新建Web项目是jstl一项不要选none就不会出现这个问题.(还有可能就是缺少servlet-api.jar)