BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Visual Studio Online构建自动化新特性

| 作者 Jonathan Allen 关注 594 他的粉丝 ,译者 刘振涛 关注 23 他的粉丝 发布于 2015年5月4日. 估计阅读时间: 5 分钟 | CNUTCon 了解国内外一线大厂50+智能运维最新实践案例。

微软完全重写了Team Foundation Server和Visual Studio Online的构建服务器,新工具不再使用大量基于XAML的Windows工作流文件作为构建定义。

这次重写主要解决以下问题:

  • 如果不学习工作流基础知识,则无法添加构建后自定义脚本
  • 构建服务器不支持非Windows平台,不能用来构建iOS app
  • 要想构建Java程序,必须学习MSBuild和另外一项技术
  • 只有最新版Visual Studio才能编辑构建模板
  • 大量恼人的XAML。新的构建定义不再使用含有大量XAML的Windows工作流文件。
  • 不能通过Web页面或在非Windows机器上编辑构建定义

为了解决这些问题,微软的新构建服务器遵循了这些关键原则:

  • 不再创造一个新的构建/自动化领域特定语言。如果你正在使用MSBuild、Ant这些构建工具,那么你可以继续使用他们。
  • 支持非Windows平台。
  • 构建系统必须具有良好的扩展性。
  • 不应该隐藏日志记录

Visual Studio Online中的新特性

可以直接在浏览器中创建并修改构建定义,从此不需再为调整构建文件而打开沉重的Visual Studio。

构建定义经常需要访问不想告知他人的机密内容,例如产品密钥、安全token,现在你可以在构建定义中使用加密变量保护这些机密。

构建定义不再被直接定义为一个分支。你创建定义后,可以使用构建定义标记将被构建的分支,每一个分支可以拥有它们自己的触发器(CI,daily等)。

当使用诸如git-flow的工作流时,最终你往往会创建一堆特性分支。在这个新模型下,你可以在构建定义中使用通配符。举个例子,你可以定义:任一匹配“feature-*”的分支将自动被编译并运行测试,而“qa-*”分支只进行每日构建。

构建工具可以直接运行PowerShell脚本。这对Azure来说尤其重要,Azure的部署大部分由PS文件来处理。构建过程能够检查你的Azure订阅帐号,确保部署程序运行在正确的上下文中就变得更容易了。

一旦部署了一个网站,构建自动化可以启动一个“快速性能测试”,亦即基于Visual Studio/TFS中的负载测试功能,运行一个初步的冒烟测试来确保部署成功。

跨平台和测试

除了在OS X上构建之外,现在可以在OS X上的构建自动化中集成测试程序,生成一个JUnit格式的测试结果,继而被导回到构建服务器中并显示。

构建自动化也支持Xamarin测试云,你可以选择一些测试细节,例如:从Visual Studio Online直接选择你感兴趣的设备/操作系统。

VSO支持多种单元测试框架。

跨平台构建代理基于Node.js和xplat。

可扩展性

以环境变量的方式暴露关键信息,例如:构建版本号。任何脚本语言都可以读取环境变量获得这些信息。

当新版本构建工具发布的时候,构建代理可以自动升级。

开源所有开箱即用的任务,尚未决定是否允许第三方为OOB贡献代码。

在Windows平台用PowerShell编写任务,在其它平台上用xplat和JavaScript编写。

体系结构

新的构建服务器依然支持基于XAML的构建定义。

构建代理移除了一大败笔——单一的物理控制器。

代理被分为许多池,每个池被配以集合并受到池级保护。消除了管理个别构建代理的必要性。

安全性

目前的构建代理运行在一个共享进程中。这意味着一旦构建失败将影响到整个构建代理,甚至一个打开的文件句柄都会让整个过程终止。

在新构建代理模型中,每个构建运行在自己的进程下。当一个构建完成时,进程被完全销毁,并创建一个新的进程来执行下一个构建。

在大多数构建系统中都有一个相对未知的安全黑洞——“单元测试后门”。开发者可以通过写单元测试来捕获敏感信息,然后用于获取严格保密的信息。为了帮助开发者减轻这方面的风险,构建代理绑定了一个时间限制token,一旦构建完成立即失效。

想了解更多有关构建自动化新特性的信息,欢迎查看Channel 9的现场演讲《Team Foundation Server和Visual Sdudio Online中的新一代构建自动化》。

查看英文原文:New Build Automation Features in Visual Studio Online


感谢邵思华对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入InfoQ读者交流群InfoQ好读者)。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT