2018 年 5 月

第 33 卷,第 5 期

DevOps-任何语言,任何平台上用 Azure DevOps 项目

通过Willy Peter Peter |5 月 2018

在过去的两年,Microsoft 已推出的理由相信措施的持续集成 (CI) 和其 DevOps 平台提供的持续交付 (CD) 管道计划。ALM |DevOps Rangers 团队已处于活动状态中的工作,其中包括创建和知识来从每个版本中,在很多篇博客文章和在MSDN 杂志如"应用 DevOps 到软件开发项目"(的文章msdn.com/magazine/mt767695) 和"使用 Visual Studio Team Services 持续交付通向"(msdn.com/magazine/mt814804)。年的投资进行付款,则股利等,如今拥有的节奏和异构性会 DevOps 生态系统围绕已通过 leaps 和 bounds 发展的 Visual Studio Team Services (VSTS) 平台构建的 Microsoft 作为。

在这方面的努力后面是开发团队常用的应用程序框架、 自动和无缝 CI/CD 管道集成和内置监视支持该需内置支持-所有中的语言和他们选择的平台。此外,开发人员想要构建任何应用程序,在任何 Azure 服务,以分钟为单位。速度和简单性至关重要。

Microsoft Azure DevOps 项目 (bit.ly/2E5zkWG) 解决了所有这些需求。它使开发人员能够启动任何 Azure App Service 中只需少量的快速步骤,提供所需的所有开发、 部署和监视应用程序上的应用程序。创建 DevOps 项目,和它所设置的所有 Azure 资源并提供部署到 Azure 的 Git 代码存储库、 Application Insights 集成和持续交付管道安装程序。DevOps 项目仪表板让你监视的代码提交、 生成和部署从在 Azure 门户的单一视图。

本文探讨如何 DevOps 项目启用云功率 CI/CD 使用 VSTS 到:

  • 获取启动并运行新的应用程序与完整的 DevOps 管道在只需几分钟内
  • 支持多种常用框架,例如.NET、 Java、 PHP、 Node.js 和 Python
  • 与内置的 Application Insights for 即时分析和可操作的见解集成
  • 重新开始或使现有应用程序,从 GitHub

或者,我们可以看看 DevOps 项目作为一项功能以帮助的"入门"在 Azure 上的用户。假设开发人员需要开发并将 Node.js 解决方案部署到 Azure。用户需要查找哪些 Azure 服务最适合语言、 框架和平台方案、 原型环境,并最后创建团队的工程过程。每个步骤都有学习曲线和多个故障点。DevOps 项目简化了所有这些,并使其失败证明。它不是只是关于 DevOps,也关于简化若要开始在 Azure 上。

讨论 DevOps

我想要暂停一段时间来重申一遍 microsoft DevOps 此处我们定义。作为 Donovan 棕色 Azure 组中的主体 DevOps manager 描述它:"DevOps 是值的人员、 流程和产品,若要启用向我们的最终用户的持续交付的并集。"

您可以细读在 Microsoft 站点 DevOps (aka.ms/devops) 的见解的经验教训按 Microsoft 开发人员部门在敏捷 DevOps 我们七年通往过程。工作量产生此处的重点是客户区域性首先放入生产和连续提供以三周云的频率的值。

在本文中我们将重点更轻松定义的一部分我们 DevOps,产品。如前文所述,开发人员最渴望获得可轻松、 快速且一致的进程。它们要求支持他们选择的编程语言和平台,以及自动化,现成可用 CI/CD 管道。

中所示图 1,CI/CD 管道是一系列的持续集成、 测试和部署到生产环境所做的更改所使用的非重复手段。从遥测、 用户反馈和实时站点事件流后通知做出的决策,改进未来版本中,也是最重要的见解的计算结果是部署的假设。它有关持续交付价值。

DevOps 实践
图 1 DevOps 实践

Azure DevOps Projects

使用 Azure DevOps 项目中,你可以构建 Azure 应用程序,在 Azure 服务,以分钟为单位。你还可以获取自动完全 CI/CD 管道集成、 内置监视和平台的所选的部署。中的表中所示图 2,有几种应用程序、 框架和部署类型时创建新的 DevOps 项目进行选择。请务必要注意此表反映在撰写本文时的信息并且由你阅读此内容的时间将改进了内置支持。

图 2 应用程序、 框架和部署选项

应用程序 框架 Windows 部署 Linux 部署
    Web 应用程序 虚拟机 Web 应用程序 容器的 web 应用
.NET ASP.NET X X    
ASP.NET Core X X X X
Java 冲刺 X     X
JSF X     X
Node.js Express.js X     X
Sails.js       X
简单的 Node.js X     X
PHP Laravel X     X
简单的 PHP X     X
Python Django X   X  
Bottle X   X  
Flask X   X X

让我们了解如何通过创建一对应用程序在 Azure 门户上创建新的 DevOps 项目。我建议你开始使用 Azure DevOps 项目,并遵循使用您自己的 Azure 和 VSTS 帐户。此方法会让您浏览详细信息中的生成解决方案。

中所示Figure3,第一个应用程序示例基于 Java 和 Spring framework 中,并已为 Web 应用在 Windows 上部署。它是许多可能的示例演示在 Windows 上运行的技术的组合之一-开发人员的一个常见方案。

在 Windows 应用程序上的 Java,JSF,Web 应用
图 3 上的 Windows 应用程序的 Java,JSF,Web 应用

在 Azure 门户中,你将创建新的 DevOps 项目。然后,您可以选择从一组的示例使用.NET、 Node.js、 PHP、 Python 或 Java 开发的应用,也可以将自己的代码。

若要部署应用程序,(1) 选择的 Java 示例应用程序、 (2) 作为应用程序框架选择 Spring 和 (3) 在 Windows 上的 Web 应用选择作为你的 Azure 服务来部署应用。下一步,(4) 输入新的项目名称,并确认或更改的 Azure 和 VSTS 详细信息。你将创建新的 VSTS 帐户并将 App Service 位置更改为加拿大中心。同样,你可以更改订阅,如 Azure 设置定价计划、 Web 应用名称和 Web 应用的位置。内置的验证确保输入了正确的值和避免下游故障情况。

完成后,重复该练习中,但这一次选择要部署应用程序的.NET,.NET 核心框架和适用于容器在 Linux 上的 Web 应用。这是另一个简单的示例,演示如何多种技术可以在容器中在 Linux 上运行。通过完成以下四个简单步骤,你已创建两个 DevOps 项目,如下所示图 4

DevOps 项目
图 4 DevOps 项目

这些项目让你轻松并快速创建多个流行的语言、 框架和平台的完整 CI/CD 管道。这是快速演示和实验项目的有用资产并获取你的开发团队的好办法启动与全面、 可扩展,且一致的过程。

在幕后的幻数

显然,无此发生的幻数。选择运行时框架、 服务和配置后单击完成按钮,它启动的不同阶段中, 所示序列Figure5。通过在 DevOps 项目列表中选择新项目或在 Azure 门户上使用通知,可以导航到所示的 DevOps 项目仪表板。

在 Azure 上的管道视图
在 Azure 上的图 5 管道视图

所涉及的四个阶段是:

  1. Azure 资源:创建并配置你的 Azure App Service 资源、 App Service 计划和应用程序终结点。
  2. 存储库: 创建分布式的 Git 存储库并签入的示例代码。
  3. CI/CD 管道: VSTS 协作解决方案的工程团队,允许您计划,请使用无缝连接测试、 发布和监视你的解决方案。
  4. Application Insights:  创建并配置 Application Insights 遥测。利用此工具,活动监视和学习以主动检测问题和继续分析和测试而无需代码的假设。

请注意,DevOps 项目阶段不仅创建和配置 CI/CD Pipeline(see section 3 in Figure 5),它们还执行请求的代码中,持续集成生成并部署到开发环境的版本。

从 DevOps 项目仪表板,监视你的 CI/CD 管道、 Application Insights 遥测,并导航到相关的 Azure 或 VSTS 资源。

当你导航到新的 VSTS 帐户时,你将找到两个新项目:JaSpWeADemo 和 dNCoWe4DDemo (图 6)。这些帐户将链接到两个 Azure DevOps 项目。

Visual StudioTeam 服务帐户和团队项目
图 6 Visual StudioTeam 服务帐户和团队项目

在生成、 CI 运行基于 Maven 生成,只要有人将签入代码。若要减少运行生成的数,更改进行批处理运行生成时。可以微调触发的生成的事件,例如指定分支或使用路径筛选器以减少的可以触发操作的文件集。

当你浏览 JaSpWeADemo 项目管道中, 所示图 7,将会看到与项目 (1) 和 (2) 环境。Dropartifact 是应用的 Build.The 连续部署触发器所生成程序的可部署一部分指示 Release Management,若要创建新版本,当它检测到一个新的项目可用。同样,你可以微调触发事件的版本中,例如仅处理从 master 分支的项目。

在 Visual Studio Team Services PipelineView
在 Visual Studio Team Services Figure7 管道视图

默认情况下,由 DevOps 项目自动创建 CI/CD 管道将部署到 Devenvironment 连续部署触发器创建发布时。开发环境要求没有手动批准、 Gatesare 禁用,以及具有只有一个部署示例 Azure App Service 的任务。

DevOps 项目生成的管道是用于演示和试验的良好起点。对于生产,管道可能需要某些其他 love,我们将在下一部分中讨论。

最后,打开第二个 dNCoWe4DDemo 示例项目,然后看一下 CI/CD 管道。总体管道看起来很相似。但是,钻取到生成,然后你会注意到,CI 生成触发器的生成的容器映像,并将其推送到 Azure 容器注册表中。CD 版本将在 Linux 上,则 Azure App Service 部署不需要任何 Linux 或容器的专业知识。

本快速演练中所示,DevOps 项目将帮助你快速地开始使用完整的功能的 CI/CD 管道。对 Azure、 VSTS 和 DevOps 学习曲线是显著缩短,在使用 DevOps 项目,相比手动生成解决方案和 CI/CD 管道。你现在要能够使用你的利益干系人,例如安全性、 操作和版本管理,使 CI/CD 管道转到下一个级别。

改进生成的管道

CI/CD 管道是 DevOps 一致地帮助团队的基本元素和连续提供的价值,以更快的速度和更低的风险。你可以增强生成的管道过程和组织的策略保持一致。可以完全自动化的测试,验证,以及传递的你的软件在生产中的多个环境中或设置与审批和关口半自动管道。你甚至可能想要提升的质量、 安全性和渐进式公开的新功能级别。

下面是一些指针,以帮助你入门:

  • Greenlighting 和关口: 优化前和部署后将信号从监视系统和其他外部服务集成的选项中的入口,一组与你发行管道 (bit.ly/2E549uG)。
  • 分析开放源代码项目: 连续分析和衡量技术质量,使用 SonarCloud 和 VSTS,从你的项目下的每个方法 (bit.ly/2J4v0ea)。
  • 安全验证:在 CI/CD 管道中的连续安全解决方案。地址安全基础结构、 验证安全、 扫描漏洞的开放源组件和攻击的监视器 (bit.ly/2Gmczjg)。
  • 新版本部署:  使用部署环渐进式公开的新版本,以及优化使用功能标志在生产中的版本 (red.ht/2GTsQNC)。

包管理的重要性

如果你考虑到你的最终用户更快地交付更大的价值方式,然后你可能正在使用 (例如 NuGet、 npm 和 like) 的包。包和 DevOps 具有 symbiotic 关系。管理包侧重于在向 CI/CD 管道交付通过打包产品的其他值,允许生成和发布自动化。VSTS,在管理包扩展被旨在作为无缝 DevOps 管道,使其更轻松地从公共源负责任地使用包和快速创建和共享你自己的包的一部分。

若要将某些管理包幻数添加到 DevOps 管道的最简单方法是使用上游源,连接到公共源,如源你包管理nuget.orgnpmjs.com。使用来自这些源通过包管理的包到有几个大优点:

  • 每次使用的包时,将已保存的副本保留在你的源,这意味着你要保护从左侧填充事件类似的问题 (请参阅bit.ly/2pO1Do5)、 公共服务中断和世界可能会在你引发任何其他源。你需要保留你管道流动只是你的 VSTS 包源。
  • 在你的源,你可以看到所有已保存的副本及其provenance, 以便你可以筛选并查看已从何处使用完全的包。

从管理包将仅使用两个步骤。首先,安装管理包,并创建一个源,如下所示在bit.ly/2GDj5W9。默认情况下,新的源自动设置与上游源nuget.orgnpmjs.com。然后,Visual Studio (bit.ly/2pR3aZZ) 或 npm (bit.ly/2J2xVUq) 以使用新馈送。在这里,它的业务像往常一样。当开始使用,你可以运行清理生成以强制包保存到源。

总结

这是一系列我们计划以涵盖新的和未来功能的文章的第一个。我们认为,透明度可帮助生成能引起共鸣和信任,并更重要的是,使您能够进行增量的步骤,以采用产品改进你的过程。书签我们时间线 (bit.ly/2uv25fM) 时,等待以后的文章中,查看我们的通知在即将发布的 Microsoft 生成并激发事件。此时,我们可以说我们正致力于一些有趣的增强功能的 DevOps 项目,包括展开 Azure VM 资源、 添加对转和 Ruby,支持和扩展数据库的支持。

现在,我们已引入 DevOps 项目,并且涉及在幕后幻数,你便增强 CI/CD 管道确信探索方法。请记住,DevOps 不目标,它只是连续的快速改进的过程。

DevOps 资源

DevOps 和 CI/CD 的领域不断快速,并且没有了很多开发人员涵盖的内容。为了帮助实现这一难题,我们汇编少量资源和链接到你可以浏览的内容和书签以供将来参考。这些资源提供了最新的产品更新和知识来从我们 DevOps 转换情景。我们希望它们将使你简化并加速 DevOps 转换。


Willy Peter SchaubVSTS,在 Microsoft 温哥华中美观不列颠哥伦比亚程序管理器。Mid-年代,因为他具有一直致力于实现保持简单性和可维护性软件工程中。您可以在 LinkedIn 跟踪他aka.ms/willysli或在 Twitter 上: @wpschaub

Alex Mullans是 VSTS,得更加简单、 更快地使团队可以共享和重复使用代码中的程序管理器。你可以在 Twitter 上关注他: @alexmullans

衷心感谢以下技术专家对本文的审阅:ALM |DevOps Rangers,Gopinath Chigakkagari Atul Malaviya


在 MSDN 杂志论坛讨论这篇文章