企业和团队对工具进行了大量投资——从工具选择到概念验证,到支持和维护,再到集成其他工具——有时工具本身也会开始感觉像产品一样。因此,有机会将不同的工具集中和集成到清晰、简洁和可移动的单元中,团队十分激动也就不足为奇了。接下来我们开始讨论 Azure DevOps 扩展。
什么是扩展?
在 Micosoft Azure 中,扩展是自定义和扩展平台上管理员和开发人员功能的小程序。
Azure 包括用于多种不同目的的扩展,范围涉及管理和监控虚拟机 (VM) 、在 Visual Studio 中编码以及 DevOps。一个例子可能是在代码更改后运行 Jenkins 管道,如果管道成功,则通过应用 Terraform 配置文件来部署 Azure 云资源。
Azure DevOps 中有很多优秀的扩展,我们无法在此处全部介绍,因此请务必自行探索,发现更多。
安装扩展
在 Azure DevOps 中安装扩展再简单不过了——
- 登录到您的组织
- 浏览市场
- 搜索扩展
- 选择“免费获取”
- 选择您的组织
此功能也可通过 CLI 和命令来使用——
Azure DevOps 扩展
我们从以项目和团队为中心的功能开始,来看一些热门的可用 Azure DevOps 扩展:
Microsoft Teams
内容:此扩展用于将大量活动与 Microsoft Teams 集成,以提高团队内部和团队之间的可见性和沟通。这些活动可包括代码提交和拉取请求、构建操作、发布等。此外还有诸如 Azure Boards 等的专门扩展,它们可以扩展或替换某些功能,因此也值得一看。
理由:沟通对于 DevOps 组织在项目期间保持一致的高速度至关重要。集中式通信平台也是管理层随时了解进展情况而无需中断更新工作的好方法。随时了解团队内部的变化(例如通过让团队通知代码提交)可以帮助提高 DevOps 团队的速度,同时在团队之间共享信息(例如使用跟踪仪表板)可以帮助保持团队同步并避免重复工作或拦截器造成的技术负债。
相关网址:https://marketplace.visualstudio.com/items?itemName=ms-vsts.vss-services-teams
Cost Insights
内容:Azure Cost Insights 扩展通过与 Azure Costs API 直接交互,提供对 Azure Cloud 成本的可见性。这种集成使扩展能够提供高度准确的数据,而无需暴露数据本身或将数据拉出 Azure。
理由:如果没有得到适当的监控和管理,云成本很容易迅速失控——事实上,许多企业将成本管理视为采用云计算的主要障碍。但在成本管理中,不仅财务部门应该发挥积极作用;从一开始,虚拟机团队就应该注意到他们的开支,并确保成本直接转化为收益。尽管有效的成本管理增加了真正的业务价值,但确保成本管理活动不会干扰 DevOps 团队的工作,这对于平衡财务和技术组织的需求至关重要。在很多情况下,这些组织之间更大的共享可见性直接促成有效的成本管理,以便推动关于该主题的富有成效的对话。
相关网址:https://marketplace.visualstudio.com/items?itemName=keesschollaart.AzureCostInsights
Delivery Plans
内容:此扩展通过以日历格式集中和公开工作来提高团队内部和团队之间的可见性和一致性。用户可以自定义视图以显示重要信息,并且当团队需要更改优先级或方向时,更改会立即反映出来。
理由:在 DevOps 组织内,一个团队,甚至是一对团队,高度同步和高效运作是很常见的。但是,有多少项目因为团队在没有沟通的情况下重复工作而脱轨,或者因为两个团队等待彼此的输出而受阻?主动沟通仍然是项目管理成功的关键组成部分,但被动沟通(如审查叫停团队的日程安排)可以节省时间和精力,省得头疼。提高团队之间的可见性可以在 scrum-of-scrum 中提供价值,或者有助于促进两个产品经理之间的讨论,但是,最大的价值可能来自于为团队提供一个有效的杠杆来控制和避免技术负债,通过决定工作的优先级和可行性来决定其他团队的实际工作。
相关网址:https://marketplace.visualstudio.com/items?itemName=ms.vss-plans
Definition of Done
内容:Definition of Done 扩展通过提高从团队到工作项等的 “done” 定义的可见性来支持团队速度。定义可在 Visual Studio 的选项卡中跟踪,以便快速便捷地参考。
理由:Delivery Plans 可帮助团队了解他们在 DevOps 组织中的位置,但是如果团队不知道他们要去哪里或何时到达那里,这种理解将毫无意义!定义 “done” 有时可能是项目中最困难的部分,而此扩展通过确保所有各方在涉及此关键项目组件时都在同一页面上来帮助完成繁重的工作。没有什么比完成一个新功能的工作或准备结束一组用户故事却发现对需求有误解并且工作没有完成更令人沮丧的了,也没有什么比这对项目更有害的了。除了令人诅丧外,如果组织经常发生这种情况,此类事件还极有可能导致技术负债。清晰地沟通、记录并同意 “done” 的定义是使 DevOps 团队有效工作的主要促进因素。
相关网址:https://marketplace.visualstudio.com/items?itemName=agile-extensions.dod
现在您的 DevOps 组织已经组织好了,接下来我们深入了解一下市场上的一些机械扩展:
Jenkins
内容: Jenkins 是持续集成和持续部署 (CI/CD) 操作的支柱。借助 Jenkins 扩展,团队可以弥合 Azure DevOps 与本地或云托管 Jenkins 服务器之间的差距,以提供无缝集成和可见性。
理由:很多团队已经在利用 Jenkins 生态系统中提供的大量功能和附加组件来推动他们的 CI/CD 项目。对这些团队来说,好消息是他们可以连接到现有的 Jenkins 资源,直接与 Azure DevOps 中的代码集成,提供更完整、更灵活的 CI/CD 环境。管理现代软件开发复杂性的最流行的新方法之一是 GitOps,它将代码开发活动与自动响应配对,例如构建容器、在云中启动编排服务以及将容器部署到服务中。但这只是一个例子——启动一个包含成功代码编译测试数据的数据库,然后在测试成功时将代码发布到生产环境中,怎么样呢? 集成 Jenkins 和 Azure DevOps 是实现这一目标的其中一步。
相关网址:https://marketplace.visualstudio.com/items?itemName=ms-vsts.services-jenkins
相关文章:
Azure DevOps vs. Jenkins – 年度对比分析报告
Advanced Jenkins Parallel Builds (And Jenkins Distributed Builds)
What Do Jenkins Controllers Say About the Evolution of CI/CD? You Want to Read This!
The Top 10 Jenkins Plugins You Should Be Aware Of in 2021
Terraform
内容:Hashicorp 的 Terraform 如风暴般席卷了基础架构即代码 (IaC) 世界,在其作为最广泛采用的框架的位置上占据主导地位。资源有状态性和可预测的基础架构配置和部署的双重威胁使该工具成为任何 DevOps 团队工具带中的必备工具。
理由:此扩展将 Terraform 的全部功能带入 Azure DevOps 操作,使团队能够启动虚拟机或与其他操作一起创建整个环境。但是此扩展的作用不仅如此,它还为 AWS 和 GCP 云提供了相同的功能,这一切都得益于 Azure DevOps 的便利性。随着媒体中多云概念的兴起,组织开始寻找跨供应商边界、理想情况下从中心位置有效管理资源的方法。Azure DevOps 的 Terraform 扩展不仅将跨提供商基础架构即代码 (IaC) 支持推上台面,而且无需更改现有工作流逻辑——只需添加 Terraform 代码即可在新提供商中实现基础架构,将其插入工作流 ,然后在此扩展程序完成其余工作的同时静观其变。这个功能非常强大,因为它最大限度地提高了组织的效率,而这些组织已经面临一项艰巨任务:成为多云。
相关网址:https://marketplace.visualstudio.com/items?itemName=ms-devlabs.custom-terraform-tasks
Docker Build Task
内容:在虚拟世界中,Docker 一马当先。容器,尤其是 Docker 结构,已经席卷了 DevOps 世界,成为事实上的标准。Docker Build Task 扩展将 Docker 构建、推送和组合功能携带到 Azure DevOps 中,并具有用于增加对 Azure Container Service 支持的特殊功能。
理由:大部分 DevOps 团队都在以一种或另一种方式使用 Docker——无论是通过像 Kubernetes 这样的容器编排系统进行完全集成,还是通过像 Azure Container Service 这样的托管服务集成,或者只是为了本地开发的灵活性。使用此扩展使团队能够将 Docker 构建完全集成到 Azure DevOps 开发生命周期的任意阶段。这种集成返回的价值可以有多种形式——从构建容器到捕获不断变化的代码作为 GitOps,响应安全更新或新版软件等供应链事件,启动便携式测试平台以自动验证更改等等。将这些操作作为 Azure DevOps 管道中的内联活动,对于任何工具箱来说都是一个奇妙而有价值的工具。
相关网址:https://marketplace.visualstudio.com/items?itemName=lambda3.lambda3docker
相关文章:
Docker 与 VM对比
Docker 与 Kubernetes – 对立还是统一?
GitHub Integration for Azure Pipelines
内容:此扩展在功能上与 GitHub Actions 相似,因为它无缝支持基于管道的构建/测试/部署活动。
理由:追求 GitOps 战略的组织将对此扩展特别感兴趣,因为它可以将 Azure 管道、代码管理和自动化操作结合在一起。响应代码更改的自动化操作的范围广泛,既可以进行简单的检查(例如,验证分支名称或确认自动化测试的结果),也可以实施更复杂的逻辑(例如,计算圈复杂度或执行防病毒扫描)。除了执行有价值的功能外,此类自动化操作对于团队来说也是一种非常有价值的方式,可以在不牺牲质量或不需要额外人员的情况下提高速度——事半功倍!
相关网址:https://marketplace.visualstudio.com/items?itemName=ms-vsts.services-github
Incredibuild
内容:此扩展将 Incredibuild BuildConsole 带入 Azure DevOps 中,以显著降低 Visual Studio 中的构建时间。
理由:云中的一切都具有时间敏感性——从自动响应事件到基于活动的扩展或缩小,再到由响应时间驱动的动态路由决策——也许没有比从代码更改到完成构建的时间更敏感的了。通过利用 Incredibuild BuildConsole,开发人员可以在每次构建中节省时间,并将节省的时间用于额外的测试、更快交付或仅仅是提高速度。有很多方法可以提高开发人员的输出并改善体验; 但有时,在软件开发生命周期中简单地注入原始能量是获得出色结果的最快方法。
相关网址:https://www.incredibuild.com/free-trial
结论
Azure DevOps 扩展可以帮助团队在苦苦挣扎时走出运营效率的困境,或者为已经表现出色的团队将拨号提高到 11 个,所有这些都是通过为团队提供一个针对不同工具的集中且方便的集成服务总线而实现的。从围绕工作的共同理解调整团队到启动基础架构再到构建代码,Azure DevOps 扩展简化了工作,消除了手动任务,并帮助团队在其高峰期运行。