#VSTS日志# VM部署和交付计划 – 5月11日

最后更新:5/15/2017
注意:这篇文章中讨论的功能将在未来三周内推出。

这个迭代有我们//Build 2017会议所提到的交付成果在里面,尤其在CI/CD领域,所以是一次非常大的迭代更新。

我们的目标之一是不断降低自动化的门槛,让团队能够轻松部署并验证他们的应用程序是可以快速交付的。而且我们的持续交付系统是一个完全开放的系统。通过与Azure的深度集成,使用起来非常简单。同时,它也为开发和运营提供了更多的工作方式。为此,我们不断的致力于让VSTS+Azure成为最佳的端到端的DevOps工具。

此阶段为我们实现这个目标带来了一大波新功能,而且大大的扩充了我们所支持的应用类型:

  • 我们现在提供在VM上使用部署代理的方式进行。这项功能是客户反馈非常强烈的一项,我们很高兴这次可以发布这个功能。
  • 我们继续把更多的重点放在容器上。这个阶段,我们引入了对Kubernetes和Service Fabric的支持,后者是Windows容器的一个很好的选择。
  • 我们虽然已经很好的支持Azure Web Apps的部署,但是我们还是扩展了我们支持的应用程序类型,其中包括基于容器的Node,PHP和Linux Web Apps。我们增加了更多的配置入口,以提供更多的选项来让用户可以通过Azure门户网站配置界面设置CI / CD,并增加了如何通过命令行为Azure Web Apps设置CI / CD的功能。

VM部署

发布管理现在支持更加强大的开箱即用的多机部署能力。现在,您可以在多台计算机之间进行执行滚动更新来确保应用程序的高可用性。

基于代理的部署功能使用相同的构建和部署代理。但是,与当前通过在代理池中的一组代理服务器上安装构建和部署代理并驱动远程目标服务器的方法不同,您可以直接在每个目标服务器上安装代理,并直接驱动这些服务器执行滚动更新,这样您可以在目标计算机上使用我们提供的所有部署任务,而不用仅仅是那些支持远程执行的任务。

一个部署组是一组安装了代理的目标(机器),部署组代表您的物理环境,例如单机开发环境,多机器QA环境和UAT / Prod验证环境,它们也详细描述您的物理环境的安全性配置。

部署组

您可以在任何虚拟机上注册vsts 代理。我们支持在Azure创建vm的同时,通过勾选vm扩展的方式自动安装代理。同时我们会自动识别Azure中的vm标签,让你可以在流水线中更容易的控制这些机器。

一旦你拥有了部署组,您只需配置您希望我们在该部署组上执行的操作。您可以通过标签来控制哪台机器运行你想要的内容并且控制它在执行滚动更新时候的推进速度。

运行部署时,日志将显示整个目标机器组的进度。

部署组进度

此功能现在是发布管理的一个组成部分,使用它不需要额外的授权就可以使用。

Azure虚拟机规模化部署

用于部署的另一种常见模式是为应用程序的每个版本创建一个完整的机器镜像,然后进行部署。为了使这更容易我们通过Build immutable machine image任务使用Packer在应用程序部署之后生成包含所有先决条件的机器镜像。这些任务可以采用部署脚本或打包程序配置模板来创建机器镜像并将其存储在Azure Storage帐户中。该镜像可以用于Azure Virtual Machine 规模化部署,对于这种immutable镜像部署是非常有效的。

改进的Docker应用部署任务

有了这个版本,我们将Docker扩展中的大部功能提供了开箱即用的支持,并引入了一组新的任务和模板来使容器场景的配置更容易。

  • Docker:构建,推送或运行Docker镜像,或运行定制的Docker命令。该任务可以与Docker或Azure Container Registry(ACR)一起使用。现在,我们支持使用ACR的内置服务主体验证,这让操作更加简单。
  • Docker-Compose:构建,推送或运行多容器Docker应用程序。该任务可以与Docker或Azure Container Registry一起使用。
  • Kubernetes:通过运行kubectl命令来部署,配置或更新ACS服务中的Kubernetes集群。
  • Service Fabric:将容器部署到Service Fabric集群,Service Fabric是当前在云中运行Windows Containers的最佳选择。事实上,VSTS本身的很多服务也在逐步迁移到Service Fabric之上。

Azure Web App部署改进

我们对Azure Web应用程序的支持进行了许多改进:

  • Azure App Service部署任务支持Node.js,Python应用程序的部署。
  • Azure App Service部署任务支持Linux下基于容器的Azure Web App的部署。
  • Azure门户连续交付现在扩展支持Node应用程序。

我们还在最新的命令行配置CI/CD版本中嵌入了上述CI / CD的支持。例如:

az appservice web source-control config --name mywebapp --resource-group mywebapp_rg --repo-url https://myaccount.visualstudio.com/myproject/_git/myrepo --cd-provider vsts --cd-app-type AspNetCore

在构建或发布期间安装SSH密钥

此功能仍然属于预览版阶段,Install SSH Key (Preview)在构建或发布之前安装SSH密钥,并在构建或发布完成时将其从代理中删除。安装的密钥可用于从Git存储库(包括submodules)中拉取代码,用于运行部署脚本或其他需要SSH身份验证的活动。这个功能未来将会进一步改善,以支持密码和其他功能。

更换旧的构建定义编辑器

在接下来的几个星期内,我们将逐渐停用旧的构建定义编辑器。新设计的编辑器提供更直观的体验,解决了很多实用上的痛点,并添加新功能。我们希望您能够更容易地使用模板来添加任务和更改设置。现在,您可以使用过程参数,在无需修改具体任务的情况下调整构建定义的行为。在这篇博文中了解更多信息。

注意:托管的XAML构建控制器正在被逐步停用

在2017年7月1日,我们将停止在Team Services托管的构建池中支持XAML 构建控制器。您仍然可以进行基于XAML的构建,但您需要搭建自己的(私有)控制器/代理。您可以在云虚拟机(如Azure)中或您自己的内部的服务器上执行此操作。要使用私有的XAML控制器和代理,您需要在帐户中拥有足够的专用管道。有关详细信息,请参阅 I’m looking for the hosted XAML build controller. Where did it go?. 

您应该逐步将构建定义迁移到我们较新的构建引擎上,这样您将可以使用更加全面的功能,包括托管构建。

如果构建中指定了使用Visual Studio 2017,但是代理服务器上不存在,这个任务将失败

Visual Studio BuildMSBuild的任务工作项要求您选择Visual Studio中的一个特定版本。到目前为止,如果Visual Studio 2017版本不可用,这些任务将自动选择下一个可用版本。

我们最近对这个行为进行了修改,如果您指定了Visual Studio 2017但代理服务器上没有安装这个版本的VS,则构建将失败。

我们做出这个修改的原因如下:

  • 较新的应用程序类型(如.NET Core)无法使用旧的构建工具进行编译。他们明确要求Visual Studio 2017或更新版本。
  • 当您使用相同的确切版本的Visual Studio时,您会获得更一致和可预测的结果。
  • 每当构建任务被降级使用老版本的vs时,您可能会收到难以理解的编译错误。
Tip:

如果您在Team Services上使用托管代理,请确保选择Hosted VS2017队列。如果您使用私有代理,请确保使用与具有Visual Studio 2017代理池连接的队列,以及确保代理包含Visual Studio 2017或更新的版本。

自动从工作项链接到构建

通过构建定义中的新设置,用户可以在工作项上直接跟踪相关的构建,而无需手动搜索。与工作项相关联的每个成功构建自动显示在工作项表单的开发部分。

要启用此功能,请在构建定义的“选项”下切换设置。

注意:该功能仅适用于构建Team Services 内置的Git或TFVC的定义,并且只能使用新的构建定义编辑器。

机智构建链接

交付计划功能公开发布

我们很高兴地宣布,交付计划不再是有限预览版,现在已经包含在VSTS的基本访问级别中,所有用户都可以使用这个功能了。交付计划是一种计划管理工具,通过在基于迭代的日程表上跟踪工作状态,帮助用户提高跨团队的可见性和一致性。用户可以根据帐户中的各个项目定制包含团队或不同积压工作级别的计划。此外,计划的Field Criteria 使用户能够进一步自定义其视图,而Markers突出显示重要的日期。

交付计划目前仅适用于VSTS,它将被包含在即将发布的TFS 2017 Update 2版本中。

查看交付计划的相关页面了解更多信息并且可以安装相关扩展。

工作项搜索功能公开发布

感谢大家安装和使用marketplace上的工作项搜索预览功能。它是我们点赞最多的功能之一。当前的VSTS版本中已经内置了这个功能使您更容易的搜索工作项。

您可以使用搜索框开始使用工作项搜索:

机智搜索

过程模版定制改进了流程定制的体验

我们对流程定制页面进行了优化。包括顶部的导航栏,清楚地显示您在编辑进程或进程内的工作项类型时所处的模块。

机智过程

此外,现在您将更容易自定义工作项表单。当您从工作项中的菜单中选择自定义”时,我们会自动为您创建一个继承的过程(如果尚未使用该过程),并将其带入布局编辑器。

机智过程上下文菜单

最后,我们添加了一个页面,显示集合中的所有字段。以前,您可以从某个团队的过程模版中删除一个字段,但这个操作不会从集合中删除该字段。您现在可以访问“字段”页面,选择字段,并从集合中永久删除它。

机智过程领域

修改开箱即用的字段

我们已经使用户可以根据需要从其中一个内置的过程模版(Agile,Scrum或CMMI)设置一个字段,或者设置其默认值。以前,当用户编辑这些字段之一(如“优先级”,“描述”或“商业价值”)时,编辑对话框中只有两个选项卡:定义和布局。使用新版本,我们添加了一个新的选项卡(Options),允许用户设置这些字段成为必需,或者给出默认值。例如,用户可以将Business Value字段设置为必需,或将Priority 字段默认为“3”。

机智oob领域

文件浏览器的优化

我们已经对文件在线查看的方式进行了多次更新,以提高查看和编辑体验。

对于查看,我们已经可以查看当前文件夹中的README,预览Markdown文件,将文件与先前版本进行比较,并查看错误。

文件查看

文件比较

对于编辑,现在可以预览您的更改,轻松添加评论,提交到新分支,并链接工作项。

文件编辑

Git LFS文件锁定

我们添加了Git LFS 文件锁定功能。这样,对于存放在Git LFS中的那些无法进行版本比较的大文件,任何人都可以开始编辑文件之前,对这些文件进行锁定。当其他人尝试锁定时,服务器拒绝请求,让第二个人知道其他人已经在处理该文件。请升级到Git LFS 2.1或更高版本才能使用此功能。

分支策略配置页面的全新体验

我们重新设计了分支策略配置页面,并添加了一些很棒的新功能。最强大的功能之一是配置分支文件夹的策略。您可以从分支视图中选择一个分支文件夹并从上下文菜单中选择分支策略

配置分支策略

这将打开一个新的策略配置界面,您可以在其中配置适用于此分支文件夹中所有分支的策略。

政策页面

在构建策略,我们还增加了单个分支多个构建的支持。还有一些其他新的选项,比如指定触发自动或手动的类型。手动触发器对于那些可能需要很长时间运行的自动化测试非常有用,您只需要在完成拉取请求(PR)之前运行一次。构建策略还具有显示名称的功能,如果您正在配置多个构建,则该名称很有用。

手动构建

一旦你配置手动触发的策略后,用户可以通过在“ 策略”部分中为拉取请求(PR)选择“启动构建”来运行该策略

手动构建队列

对于需要的代码检视动作的策略,当管理员进行策略修改时,我们将在PR的历史记录里面添加说明以提示团队。

需要的审阅者对话框

需要评论者注释

拉取请求(PR)分享功能改进

拉取请求(PR)分享的操作是通知评审的便捷方式。在此版本中,我们添加了对团队和组的支持,因此您可以在一个步骤中通知所有涉及该请求的人员。

与团队分享拉请求

拉取请求(PR)评论的默认通知

这个功能帮助团队成员对PR中所发生的新的评论通知保持同步。对于您创建的PR,您将在用户添加新的注释线程或回复现有线程时自动收到通知。当您对其他用户的PR进行评论时,系统会通知您将来对您创建或回复的评论的任何回复。

默认PR通知

这些通知可作为开箱即用订阅的一部分提供,可在“ Notifications”页上进行配置。

改进团队拉取请求(PR)通知

正在使用Azure Active Directory(Azure AD)与Team Services管理其组的团队现在可以选择使用这些组进行拉取请求。当你创建提取请求时,可以为其分配Azure AD组,它们像任何其他审阅者或组一样 被添加。

AAD通知

对于拉请求投票时,Azure AD组的行为与其他组一样。投票的任何一名成员将以投票方式将其投票视为对该组的投票。如果您正在使用分支策略并为repo配置了特定的审阅者,则现在可以使用Azure AD组以及Team Services组。

添加Azure AD组以查看提取请求时,该组还将使用该组的电子邮件地址来通知拉动请求活动。

文件浏览器中的新树型视图

拉取请求文件视图,Git提交详细信息,Git推送详细信息,TFVC Shelveset详细信息,TFVC更改集详细信息,TFVC更改集库和Git历史记录库等等,这些地方都已经启动了新的树型视图。树型视图有一些可用性的改进。首先,我们更改了视图,以显示一个缩小的树型视图,自动折叠空文件夹节点,最大限度地提高了视图中的文件数量。

该树还以更紧凑的方式显示评论,带有注释的文件会显示每个注释线程的子项,而头像指创建线程的用户。新的评论和那些有回复的评论用蓝点表示,并且回复的计数被总结为一个计数。

新树视图

包管理器(Package Management)中增加对Maven的支持(公开预览)

Java开发人员通过在Maven工具中打包代码(Java等效的NuGet软件包)来共享组件。VSTS用户需要一个地方使用Maven来承载他们需要使用的第三方服务(如Nexus或Artifactory)。我们自豪地宣布,团队服务包管理(Package Management)现在支持托管Maven工具!看看我们的入门指南

NuGet Restore,Command和Tool Installer构建任务

我们对NuGet Installer(现称为NuGet Restore)任务进行了重大更新,并添加了两个新的NuGet任务:NuGet CommandNuGet Tool Installer。最值得注意的是,NuGet CommandNuGet Restore任务默认使用nuget.exe 4.0.0。

NuGet Tool Installer使您可以通过NuGet Restore的NuGet Command 任务来管理NuGet的版本。默认情况下,这些任务将使用一个常用的测试版本。如果要覆盖这个版本,只需在NuGet其他构建步骤之前添加一个NuGet Tool Installer步骤。

NuGet Restore现在针对在Visual Studio构建步骤之前恢复软件包的最常见的情况进行了优化。它还可以更好地支持共享一个NuGet Feed的小型项目:现在可以选择Team Services Feed并将其添加到自动生成的NuGet.Config中。

电子邮件通知收件人合并功能

如果一组收件人都将受到同一个事件的邮件通知,我们将会使用一封邮件,并将所有收件人合并显示在收件人一栏中。以前,每个人都将收到一封独立的电子邮件,这让收到邮件的人很难知道还有那些人也对这个事件关心,无法使用类似“回复所有人”这样的功能来仅需跟进。此功能适用于能够定位多个收件人的开箱即用的订阅和团队订阅。例如,当对拉取请求进行更改时,拉取请求的所有审阅者现在都会收到同一封电子邮件,并在收件人一栏看到所有其他人的地址。

此功能默认启用,但可以由帐户管理员通过在用户配置文件菜单下的“ Preview features 面板关闭帐户级Combine email recipients功能来禁用此功能。

详细了解如何combining email recipients.

开箱即用的通知功能进入公开预览版阶段

通知功能已经可以在所有帐户使用。当与直接相关的帐户中有活动时,用户和团队现在会通过电子邮件被自动通知,例如:

  • 当工作项目分配给用户时
  • 当用户或团队作为审阅者添加到拉取请求时
  • 当用户或团队是拉取请求的审阅者被更新时
  • 当另一个用户响应拉请求注释时
  • 当用户请求的构建完成时
  • 当一个插件被安装或请求时(仅限管理员)

用户可以通过配置文件菜单下的通知设置,关闭适当的开关来取消订阅。注意:这些默认订阅仅适用于当前帐户。

帐户管理员可以通过导航到Notifications中心来禁用这些自动订阅中的一个或多个。可以通过在“…”下单击Disable来禁用这些订阅。一旦订阅被禁用,用户在其个人通知设置页面中将不再显示。

详细了解即时通知

增强Marketplace中的发布商体验

发行商现在可以访问新的采购数据,包括在所选时间段内的插件安装量,扩展页面视图的日访问趋势,Team Services和TFS Connected的下载安装量以及从页面浏览到下载安装的转换率。此数据也可以使用EXCEL格式下载,以帮助您创建自己的自定义报告。

在Q&A部分你可以看到所有用户反馈的问题。您可以通过对这些问题进行回复,与用户进行互动,以便更好地推广您的插件。

所有者和贡献者角色可以通过市场购买

我们添加了通过Visual Studio Marketplace购买Azure订阅所有者和贡献者角色的功能。以前,只有Azure订阅管理员和联合管理员才能购买,这需要拥有订阅管理员权限,而且只能通过经典的Azure门户网站进行。现在,他们可以通过Marketplace购买给您的团队,从新的Azure门户添加用户作为所有者或贡献者。

市井

如果您对这些功能有任何的反馈,请通过我们的门户网站给我们点赞,或通过团队服务开发者社区发送其他意见。一如以往,如果您有希望我们优先考虑的想法,请到UserVoice提交您的想法或对在其他的想法上投票。

谢谢,

Jamie Cool


请关注微信公众号 【devopshub】,获取更多关于DevOps研发运维一体化的信息

qrcode_for_gh_b7c158df1fd1_430