FCon7折倒计时最后一周:日程已上线70%!查看详情>>> 了解详情
写点什么

Visual Studio Online 构建自动化新特性

  • 2015-05-03
  • 本文字数:1671 字

    阅读完需:约 5 分钟

微软完全重写了 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 读者交流群)。

2015-05-03 06:101491
用户头像

发布了 63 篇内容, 共 130.9 次阅读, 收获喜欢 38 次。

关注

评论

发布
暂无评论
发现更多内容

腾讯SaaS千帆对渠道的态度——合作共赢的诚意

人称T客

5招详解linux之openEuler /centos7防火墙基本使用指南

华为云开发者联盟

centos7 网络安全 防火墙 openEuler 网络环境

最右JS2Flutter框架——动画、小游戏的实现(四)

刘剑

flutter 大前端 探索与实践

Linux神器strace的使用方法及实践

华为云开发者联盟

Linux 运维 工具 后端 Strace

不断壮大的电竞生态——英特尔大师挑战赛携手李宁中国选手等你来战!

最新动态

中国计算机软件开发合同纠纷分析报告(2019-1)

朱又生

大数据 项目管理 计算机软件开发合同纠纷 风险管理

第四届IMC再起烽烟 极致性能助战力升级!

最新动态

将设计模式应用到日常的curd中-模板方法和装饰器

LSJ

Java 设计 设计模式 装饰器 模板方法

中国计算机软件开发合同纠纷分析报告(2019-3)

朱又生

大数据 项目管理 计算机软件开发合同纠纷 风险管理

Oracle常用命令

阡陌r

微服务架构

不在调上

获奖名单公布 | 写作平台八月宠粉福利来袭,参与创作领取限时大奖~

InfoQ写作社区官方

写作平台 征稿 热门活动

丢弃掉那些BeanUtils工具类吧,MapStruct真香!!!

Hollis

Java 程序员 后端

第十周作业

晨光

娱乐至穷

北柯

学习 互联网 娱乐 抖音

中国计算机软件开发合同纠纷分析报告(2019-2)

朱又生

大数据 项目管理 计算机软件开发合同纠纷 风险管理

SpreadJS 纯前端表格控件应用案例:医疗行业智能报表系统

葡萄城技术团队

微服务的认识

chenzt

IMC御用设备到底有多强?英特尔携手掠夺者呈现“飞”一般5GHz电竞盛宴

最新动态

RushPlayer“一键下马”系列之-JavPlayer

flow

AndroidStudio解决Unknown host 'd29vzk4ow07wi7.cloudfront.net'. You may need to adjust the proxy settings in Gradle

小菜鸟学php

SpreadJS 纯前端表格控件应用案例:生产采购管理软件

葡萄城技术团队

9个常用ES6特性归纳(一般用这些就够了)

华为云开发者联盟

Java 程序员 编程语言 ES6 编程效率

原创 | 使用JPA实现DDD持久化- O:对象的世界(3/3)

编程道与术

Java hibernate DDD JDBC jpa

信息管理软件需求分析阶段的实践经验及论述(2010年)

朱又生

项目管理 产品经理 需求分析 用户需求调研

第十周总结

晨光

软件规模扩张与其组织粒度的进化

superman

中台 微服务 服务化改造

计算机网络基础(十七)---传输层-TCP的可靠传输

书旅

TCP 计算机网络 网络协议 计算机基础 TCP/IP

华为阿里下班时间曝光:所有的光鲜,都有加班的味道

程序员生活志

华为 加班 阿里

快速学习秘诀:费曼学习法

池建强

学习

架构师训练营第10周

大丁💸💵💴💶🚀🐟

  • 扫码添加小助手
    领取最新资料包
Visual Studio Online构建自动化新特性_文化 & 方法_Jonathan Allen_InfoQ精选文章