Lab version:15.4

Last updated:11/8/2017

概述

I在本实验中,您将学习如何使用Team Foundation Build来生成,测试和部署您的应用程序。TFS生成需要在TFSweb页面上进行界面化配置,可以通过配置或者定制化实现复杂的生成流程。TFS生成除了支持微软自身的框架体系外,同时也支持Linux,MacOS系统上的对所有不同技术框架的应用程序生成。

登陆培训环境

  1. 打开实验室环境

  2. 点击右上角的登陆链接。

  3. 使用微信登陆,扫描二维码。

  4. 选择环境列表

   

  1. 选择TFS Labs

  2. 找到已购环境,点击进入

   

  1. 点击 远程连接 中的图标,连接到远程实验环境。

   

> **Note:** 实验环境默认登陆用户为系统账户**azureuser**, 实验中需要使用环境预制账户如:**Sachin Raj (Sachin)**。
  1. 如果实验中需要切换用户,可以点击远程连接页面下拉菜单中的用户切换,输入用户名以及密码,点击连接,就可以实现切换实验环境远程登陆账号。

   

 

  1. 如果实验中需要复制粘贴文档中的相关内容到虚机中可以使用labs自带的复制粘贴版进行操作

 

关于Fabrikam Fiber的项目背景

这套动手实验室使用一家虚拟的公司Fabrikam Fiber作为实验背景。Fabrikam Fiber向美国提供有线电视和相关服务。他们正在迅速增长,并且已经将产品部署到Windows Azure,产品包括允许用户在网站上自助购票的应用;还有为其客户经理管理客户订单的ASP.NET MVC应用程序。

在这套动手实验室中,您将参与许多Fabrikam Fiber团队的开发和测试场景。在实验中这个由8-10人组成的团队使用Team Foundation Server来管理他们的源代码,运行他们的生成,测试他们的产品,并管理软件研发计划和跟踪软件项目的开发过程。

练习1:生成代理池和队列

在本练习中,您将学习如何创建和配置Team Foundation Build 2018系统支持的生成代理池和生成队列。Team Foundation Build 2018是基于页面进行配置的跨平台脚本化生成系统。

任务1:在TFS Web访问中生成页面

  1. 切换用户功能,切换登陆用户为 Deniz Ercoskun (Deniz). 所有密码都是 P2ssw0rd

  2. 打开任务栏的 Internet Explorer ,点击收藏夹的 TFS FF Portal

  3. 选择Build and Release选项卡。这里显示了当前团队项目所有的生成定义。

  4. 目前团队项目中没有生成定义,并且在配置生成定义之前,我们需要配置生成所依赖的基础架构。

任务2:创建代理池

  1. 首先为项目设置代理池。该池可以包含Windows和跨平台代理。

  2. 将鼠标悬停在导航栏中的齿轮图标上,然后选择Agent Queues

  3. 默认已经有一个名为“default”的代理队列和一个代理。

  4. 单击Manage pools,在新标签中查看所有可用的代理池。

  5. 选择default池的下拉菜单,然后选择Delete以删除池及其代理。在弹出对话框中选择OK。您将在稍后进行添加代理池的操作。

  6. 关闭当前浏览器标签页。

任务3:创建生成队列

  1. MSDN文档中的此图有助于说明池,队列,团队项目集合和构建定义之间的关系。您可以在一台机器上安装多个代理,每个代理属于不同的代理池。

  2. TFS使用的Agent应用本身是Github中的开源项目,你可以从 “Microsoft VSTS Agent” 中下载需要的Winodws, Linux, MacOS代理程序。 这里我们找到最新的代理版本下载即可。

  3. 单击 **New queue**, 跳转到团队集合的代理池管理页面。

  4. 单击New queue创建新队列。

  5. Pool name输入default,然后单击OK

  6. 可以对代理池及代理进行设置。从右侧齿轮下拉列表中选择Collection settings

  7. 选择Build and Release选项卡。在这里您可以指定系统对已完成生成版本的保留时间,包括默认和最大设置。默认保留策略设置为10天,最多30天。这意味着默认情况下所有未被标记为“无限期保留”的构建都将在生成运行完成后30天被删除。

任务4:安装和配置代理

  1. 如果尚未完成,请等待代理下载完成。完成后将其解压到c:\agent

  2. 在任务栏以Administrator身份启动Command Prompt实例。

  3. 转到解压缩的代理目录。

     cd c:\agent
    
  4. 执行代理配置脚本。

     config.cmd
    
  5. 输入服务器URL “http://vsalm:8080/tfs“。

  6. Enter键采用默认的Integrated集成身份验证方式。

  7. Enter键以使用默认的“default”代理池。

  8. Enter键以使用默认代理名称“VSALM”

  9. Enter键配置代理工作目录为默认的“c:\agent_work”

  10. 请输入“Y”作为Windows服务安装,然后按Enter键。请注意,您也可以将代理配置为以交互模式运行,如果您需要使用此代理执行CodedUI基于界面的的自动化测试,则需要以该模式运行代理应用。

  11. Enter键使用默认的网络服务运行账户运行生成服务。

  12. 在命令行提示符中看到如下提示代表代理配置成功。

    Note: 大多数情况,代理不会与TFS服务器运行在同一台服务器,你可以使用Windows AD域账户或本地账户,但是此账户要有本地管理员权限。

  13. 在浏览器中导航到 Agent Pools选项卡.

  14. 您现在将看到新的default队列,以及刚才安装的vsalm代理。

  15. 选择Capabilities选项卡,下方列表显示的是当前代理所在服务器的系统功能。这些功能确保您的构建定义仅由满足指定条件的构建代理运行。代理所在服务器的系统环境变量自动出现在列表中。一些额外的功能(如.NET框架)也会自动添加。您还可以根据您的需要生成的应用自身的依赖要求附加需求功能。当生成排队时,系统会将生成请求发送给具有生成定义所要求的功能的代理。

练习2:构建定义

在本练习中,您将学习如何使用基于默认提供的模板创建生成定义,然后将生成排队对应用进行打包。

任务1:从模板创建生成定义

  1. 在浏览器中打开abrikam Fiber团队的TFS Web网页。

  2. 使用项目下拉菜单导航到Web团队部分。

  3. 导航栏中选择Build and Release | Builds

  4. 点击New definition来创建新的构建定义。

  5. TFS默认提供有很多不同的生成模板,您可以使用Visual Studio,Xamarin,Xcode等构建,测试和部署。或者,您也可以简单地从空白定义开始,自行添加生成所需的任务。这里请选择ASP.NET模板并单击Apply

  6. 将生成定义的名称更新为“Fabrikam Development Build”

  7. Agent queue选择default队列。

  8. 在下面Parameters部分单击Path to solution旁边的Browse按钮。

  9. 找到Dev分支下的FabrikamFiber.CallCenter.sln解决方案文件,然后单击OK

  10. 当前新建生成定义的默认任务设置是启动NuGet还原,运行Visual Studio生成应用,运行单元测试,发布应用symbols,将文件复制到指定的临时位置,最后发布生成输出文件到指定位置。这些步骤都在Build选项卡上设置。

    Note: 生成引擎和任务都是可扩展的,生成代理支持跨平台应用。如果你想运行的生成操作在提供的开箱即用的任务中没有时,你可以基于微软在GitHub 点击这里查看 上提供的开源人员进行扩展开发。

  11. 在仔细研究各个生成任务的配置之前,让我们先看看构建定义本身的一些关键配置选项,通过定义顶部的标签进行切换。点击Variables选项卡。

  12. 该列表显示了可供所有生成步骤(任务)使用的变量。有许多预定义的变量可供生成期间的任务使用,这些变量均列在此处,以及可在此视图中添加其他自定义变量。默认情况下,BuildConfigurationBuildPlatform都已经定义。

  13. 但您可以修改BuildConfiguration的值为“debug, release”以构建两个版本, 本实验为了节省时间,就不实际设置了。

    Note: 可以将变量设置为密码类型,以此来保存生成任务工程中使用的密钥信息。单击“值”列右侧的“密钥”按钮(锁定图标)来掩盖密码。

  14. 选择Triggers选项卡。在这里可以将生成的触发形式配置为:持续集成(为每次代码的提交触发生成), 定期执行(在执行时间执行), 本次实验使用默认手动触发方式。

  15. 选择Options选项卡。

  16. 这里可以对生成执行的内部版本号格式,编译超时时间和其他常规选项进行设置。这也可以指定代理需要满足的功能。上个练习添加的代理已经有了生成应用所需要的MSBuild,Visual Studio和VSTest功能。

  17. 选择Retention选项卡。这里可以配置保留生成版本多长时间。

  18. 可以在History选项卡中查看修改生成定义的历史记录(目前还没有)。

  19. 返回到Tasks选项卡。

  20. 选择第一个任务,Get sources.

  21. 该任务定义了如何获取要生成应用的源代码。您可以使用下方展示中的其中一个, 这里选择This Project。在下方的Workspace mapping中的服务器路径中添加/Dev

  22. 下面两个任务分别是:安装指定版本的NuGet,并使用它来恢复依赖包。

  23. 选择Build solution任务。

  24. 该任务负责生成应用程序。这里有很多配置选项,但我们只会更改Visual Studio VersionVisual Studio 2017

  25. 选择Test Assemblies任务。

  26. 这里主要执行带有”*Fabrikam*test”程序集的单元测试。将Test Assemblies字段更新为”**\$(BuildConfiguration)\*Fabrikam*test*.dll”。请注意这里只在第一样文本的”*test”之前插入”*Fabrikam”,保留第二行,在执行测试时忽略obj目录中所有程序集。

  27. Execution options部分更新Test platform versionVisual Studio 2017

  28. 在设置下一个生成步骤之前,选择Continue on Error选项(从Control Options部分),这样即使某些单元测试失败,也会执行后续步骤。这样做的原因是出于演示目的部分样例代码中的单元测试是会运行失败的。

  29. 还有一个Run this task选项,允许您指定是否运行此任务。默认情况下,任务只有在所有先前的任务成功时才会运行(如果有任何失败,则停止生成)。但是,如果您希望该任务在不同条件下运行,则更改任务执行条件。您甚至可以使用函数语法来指定自定义条件。在文档中了解更多信息。s

  30. 选择生成步骤Publish symbols path。这个任务可以指定符号存储的共享路径,本实验中不做设置。

  31. 选择最后的生成步骤Publish Artifact。此步骤将从bin文件夹中获取生成的输出文件,然后上传到到TFS服务器的生成结果中。“drop”是生成结果中的项目名称。

  32. 通过拖拽,您可以根据实际需求重新排列生成任务。这里不要更改现有排序。

  33. 也可以向现有的定义中添加生成任务。选择Add Task

  34. TFS默认提供大量各种类型的任务。

  35. 点击Save & queue | Save。单击对话框中的Save保存生成定义。

任务2:排队和执行构建

  1. 点击 Queue

  2. 对生成进行排队前,可以在Queue Build对话框对启动生成前重新设置代理队列,同时提供可选参数设置如:搁置集,变量值和需求。保持默认参数,单击Queue

  3. 这里点击版本号来跟踪生成。生成开始后,您可以在实时控制台视图中实时查看生成输出。

  4. 控制台为每个任务在构建过程中执行的步骤提供了一个输出流的视图。

  5. 当测试测试步骤的执行时,您会看到一些红色的错误文本,因为出于演示的目的,此项目中有一些测试会失败。在生成结束时,生成结果显示为橙色的Build Partially succeeded。如果生成一直未开始,刷新浏览器即可。

  6. 生成完成后,单击左侧生成步骤的根节点查看生成的概述。

练习3:持续集成和部署

在本练习中,您将学习如何将生成定义配置为持续集成触发类型。另外,您还将了解一些其他可用的部署选项。

任务1:克隆生成定义

  1. 现在我们来创建一个与上个练习类似的生成定义,新生成定义会包括一个部署Fabrikam Fiber网站的步骤。这个部署步骤会通过持续集成进行持续部署。

  2. 点击Builds选项卡返回到主生成视图。

  3. 单击Fabrikam Development Build定义右侧的,选择Clone创建当前生成定义的副本。同时如果我们希望将此生成定义的设置保存为模板给其他团队使用,可以单击Save as a Template

任务2:添加部署步骤并定义机器组

  1. 将构建的名称更新为“Fabrikam Development CI Build”

  2. 点击 Add Task

  3. 选择Deploy选项卡,为了简单起见,我们使用Windows Machine File Copy任务将部署文件拷贝到本地计算机,鼠标移动到任务上然后单击Add

  4. 再左侧任务列表选择新添加的Windows Machine File Copy任务。

  5. Source设置为以下内容:

     $(Build.Repository.LocalPath)\FabrikamFiber.CallCenter\FabrikamFiber.Web
    
  6. Machines设置为“vsalm”

  7. 输入本机管理员凭据vsalm\azureuser(密码为P2ssw0rd@123)。

  8. 现在我们需要在目标机器上指定目标拷贝位置。在Destination Folder字段右侧输入“c:\inetpub\FabrikamFiber.Web”

  9. 选择Advanced Options下的Clean Target选项,以便在每次部署之前清除之前拷贝过来的文件。

任务3:配置持续集成

  1. 在生成定义配置界面。选择Triggers选项卡并勾选 Continuous integration选项。

  2. 您可以通过添加过滤器来包含或排除某些源代码路径下的文件发生修改时是否触发持续集成。单击默认Include配置的”$/FabrikamFiber”路径右边的”“按钮。

  3. 在下拉菜单中选择$/FabrikamFiber/Dev/FabrikamFiber.CallCenter/FabrikamFiber.Web

  4. 此处还有一个选项可以设置定期部署。例如,我们可以将此生成定义设置为每天晚上运行。

  5. 点击保Save & queue | Save。单击对话框中的Save

任务4:触发持续集成生成

  1. 通过导航选项卡导航到Code菜单。

  2. 在源代码文件服务器路径那个输入框中输入路径$/FabrikamFiber/Dev/FabrikamFiber.CallCenter/FabrikamFiber.Web/readme.txt,按Enter键打开文件。您也可以使用左侧源文件树形菜单中导航到此文件。点击Edit进入编辑模式。

  3. 对文件进行简单修改(如添加新行)并单击Check in。在弹出的对话框中直接点击Check in

  4. 返回到“Build”选项卡,并通过单击生成版本号打开刚触发的生成。

  5. 在这里你可以查看生成过程,生成完成后查看结果。