Azure DevOps Server 完整介绍

    1. 什么是Azure DevOps Server
    1. 内网部署和云端服务
    1. 技术架构
    • 3.1 服务器架构
    • 3.2 扩展和定制开发
    • 3.3 客户端
    1. 工作项管理
    1. 版本管理
    • 5.1 Team Foundation Version Control - TFVC
    • 5.2 Git
    1. 全文索引
    1. 流水线
    1. 测试管理
    1. 制品库Artifacts
    1. 版本路径

1. 什么是Azure DevOps Server

Azure DevOps Server,之前名为Team Foundation Server (TFS)和Visual Studio Team System (VSTS)。它是微软公司提供的一个应用软件生命周期管理产品,是微软公司的软件开发管理平台产品。

这个产品包含了源代码版本管理(包括Team Foundation Verson Control和Git)、数据分析和度量、需求管理、项目管理(支持敏捷开发和瀑布式开发)、自动编译、自动测试和自动发布等功能模块。在产品的设计思路中,它不仅覆盖了软件开发测试过程中的全流程、各角色使用的功能,同时具备完整的DevOps能力。

作为一款强大的软件开发管理服务器,它支持软件开发行业中主流的集成开发工具(IDE),而对于Microsoft Visual Studio和Eclipse来说,这个产品几乎是为他们量身定制的服务器端软件;此外,它还可以集成常用的Office和WPS等办公软件。

2. 内网部署和云端服务

用户可以采用两种方式应用Azure DevOps产品提供的功能:内网部署on-premises("Server")和云端服务online("Services")。微软分别将这两种形式的产品命名为Azure DevOps Server和Azure DevOps Service。

在产品开发过程中,除了区分云端和内网的细微区别外,二者实际使用了同一套源代码;新功能通过测试后,产品组首先将它发布到云端平台中,供用户预览和采纳;大约三个月左右后,这些新增的功能会以升级包(updates)的方式,提供给内网用户。

我们的国内用户,基于安全和其他因素的考虑,使用内网部署的场景较多;如果使用内网部署,则需要用户自行采购、部署和维护服务器;而在使用云端服务器的过程中,用户只需要注册微软账户,即可使用Azure DevOps的全部功能,无需考虑服务器维护和数据备份的工作。但是由于云端服务器依赖互联网连接,大量金融相关的用户不得不采用内网部署的方式。

在采购方式方面,内网部署的用户,可以采用永久买断授权或按月支付授权的方式采购产品;使用云端服务的用户,只能按月支付授权的方式采购产品。

本文主要以内网部署的Azure DevOps Server为示例,介绍相关的技术架构和功能组件。

3. 技术架构

3.1 服务器架构

Azure DevOps Server在服务器端的技术架构设计中,将系统分为应用层(Application tier)、数据库层(Database tier)和数据仓库(warehouse)。作为系统架构中的主要组成部分的应用层,它运行和维护着一个web应用门户,其中提供web应用访问的用户界面,同时提供丰富而完整的rest api接口。这个web应用门户,可以为多种客户端应用提供数据和运算服务。如果作为简单的应用场景,例如用户数量少于50人的开发测试团队,我们往往可以将应用层和数据库层部署在同一台服务器中,以此降低硬件投入成本和系统维护成本。

在服务器的扩展设计中,应用层和数据库层可以分别使用负载均衡和数据库高可用技术,分别扩展多个节点,以此提供服务器的稳定性。如果我们使用了Microsoft SQL Server 2012或更新的版本,我们就可以利用数据库的高可用机制(AlwaysOn)实现数据库的故障转移,利用数据库的高可用技术,不仅可以提供不间断的数据服务,还可以将数据库部署在不同的物理位置,以此提高数据的安全性。

在Azure DevOps Server中,团队项目集合(Project Collection)是一个主要的数据容器,其中包含了多个团队项目(Team Project),而团队项目则是开发测试过程中的基本单元,它包括的开发团队的源代码、需求等多种数据。在数据存储的结构中,每个团队项目集合的数据独立存储在一个数据库中;每个数据库则可以分散在不同的数据库实例甚至不同的数据库服务器中。Azure DevOps Server将不同数据库的数据清洗到数据仓库(warehouse)中,为复杂的趋势分析等高级报表提供数据源。

Azure DevOps Server 2022之前的版本可以集成SQL Server Reporting Services(SSRS)和SharePoint,利用SSRS和SharePoint的功能为用户提供丰富多彩的报表展现形式。随着产品的持续开发和提升,从Azure DevOps Server 2022开始,微软提供了一种全新的数据分析模式(Analytics),作为内置的专用数据分析工具,它提供高效和实时的数据分析能力,为开发团队展现项目开发的进展趋势,以及当前的项目状况。随着Analytics功能的不断完善,Azure DevOps Server2022开始已经完全退役了SSRS、SharePoint和Project集成的功能。

3.2 扩展和定制开发

Azure DevOps Server为扩展开发人员提供两种独立的软件开发工具包Software Develepment Kit(SDK):Java SDK和.NET SDK。开发人员将SDK引入自己的开发工程中,就可以高效利用SDK中封装的链接方法,高效完成Azure DevOps Server在中各种任务。实际上,除开两种SDK外,Azure DevOps是基于Service-oriented architechture(SOA)设计自己的架构,它可以通过web service的方式,为各种客户端工具提供服务。

另外,Azure DevOps Server还以通知(或命名警报alert)的方式,与订阅方提供集成服务;例如工作项发送变化、流水线完成、代码已推送等事件发生时,系统可以通过电子邮件、调用接口(俗称勾子)等方式,将信息发送给第三方系统。产品提供了20多种预设的通知,用于还可以根据实际场景,自己定制需要的通知和调用机制。

在用户界面(web界面)的扩展方面,Azure DevOps Server提供了所见即所得的配置功能,管理员可以自由增加、删减节目中的字段,调整页面布局,还可以配置必填、自动设置字段值等规则;我们还可以参考官方的扩展空间的开发规范,扩展Azure DevOps Server的功能,例如增加菜单、按钮甚至页面,从而定制出一条符合企业内部管理规范的系统。

3.3 客户端

Azure DevOps Server支持主流的集成开发工具,包括Visual Studio 2010以后的版本、微软专业测试工具Microsoft Test Manager、Eclipse和基于Eclipse为核心的开发工具(例如Myeclipse)、IntelliJ Idea等;其他支持Git作为源代码管理的开发工具,也可以连接Azure DevOps Server实现版本管理,无需安装特殊的工具。

在办公管理工具方面,我们可以使用Microsoft Excel(或WPS)、Microsoft Project连接到Azure DevOps Server,实现批量和离线管理工作项数据。使用Microsoft Project还能基于工作项数据实现基于甘特图的项目管理。另外,还可以集成Microsoft PowerPoint,实现设计模型文件的自动上传和关联。

在测试方面,还可以安装微软自己开发的扩展插件"Test & Feedback",在测试过程中,测试人员使用Web浏览器自动截屏、录屏、录音、记录操作步骤,并将测试结果自动上传到Azure DevOps Server中,为开发人员提供丰富的测试数据。

在文件管理方面,还可以安装Power Tools for TFS,集成Windows操作系统的文件管理器,用户点击文件管理器,就可以下载、流量Azure DevOps Server版本库中的文件。

我们还可以安装微软提供的管理工具Azure DevOps Cli,在命令行窗口或powershell中实现对服务器的管理;也可以利用Viusal Studio安装过程中自带的命令行工具(例如tf.exe、witadmin.exe等),实现批量或在自定义的程序中操作Azure DevOps Server中的数据。

4. 工作项管理

在软件开发过程管理方面,"工作项"(work item)是一个非常核心的功能。工作项是一个对特定开发过程数据的描述表单,例如业务人员提出的需求、开发工程师的编码任务、测试工程发现的bug、测试过程中用例编写工作等,我们都用一个特定的工作项目来记录对应事项当前的状态和历史轨迹。

Azure DevOps Server支持不同的开发过程管理规范,例如CMMI和敏捷过程管理;它利用过程管理模板汇总了不同的开发规范中需要的工作项;每个工作项类型还定义了符合开发过程规范的管理流程,以此满足软件开发过程中管理规范;对于特殊的管理规范,例如企业基于CMMI做了符合自己企业的定制流程,我们还可以利用系统提供的定制功能,建立一个定制的过程模板,以此规范所有开发团队的开发过程。

在Azure DevOps Server中,不同类型的工作项之间不是孤立存在的,他们之间使用关联Link关系(例如父子、相关、前置、后续、测试等),将不同的数据有机关联起来。还可以将工作项与外部数据(例如源代码分支、提交、拉取请求、超链接、wiki、流水线等)关联起来。

5. 版本管理

Azure DevOps Server支持两种源代码管理机制,分别是集中式版本管理(Team Foundation Version Control - TFVC)工具,和集中式源代码管理工具Git。Git是在TFS 2013版本中新增的功能。

5.1 Team Foundation Version Control - TFVC

TFVC是一种集中式源代码管理工具;所谓集中,是指我们必需依靠一个中央服务器来实现版本管理,如果客户端不能连接Azure DevOps 服务器,则我们不能在TFVC中实现典型的版本管理(例如分支、合并等);TFVC是微软一直以来维护和开发管理源代码管理工具,直到Git这种分布式源代码管理工具的兴起,微软才将版本管理工具的重心转移到Git中。

TFVC使用服务器工作区(Server Workspace)和本地工作区(Local Workspace)两种类型来管理源代码的版本;在服务器工作区中,用户可以锁定必要的文件,避免不同的用户同时修改同一个文件,从而出现冲突或覆盖其他开发人员的更改;在本地工作区中,用户可以使用更为灵活的机制来管理源代码的版本,只有在用户连接服务器并执行提交操作的时候,才会与服务器发生数据交互。

为了提高数据传输效率,Azure DevOps Server还提供了一种称为代理服务器(Proxy Server)的技术;利用这种技术,我们可以在物理位置不同的分支机构中部署代理服务器,用它来缓存之前其他用户已经下载的数据;当后续的用户也需要同一个文件时,就可以从代理服务器中下载已经缓存的文件,这样会大幅提高文件传输的速度。

作为版本管理引擎,Azure DevOps Server支持签入策略(check-in Policy),确保开发人员提交的代码符合开发团队甚至企业的管理规范。系统包含了多个开箱即用的签入规则,例如提交的变更集必需关联对应的工作项、提交的变更集必需包含描述文字,否则不允许开发人员签入代码变更。除了开箱即用的签入策略外,我们还可以自定义开发符合企业要求的签入规则,利用企业内部的第三方服务器检测开发人员的签入是否符合要求。

5.2 Git

从TFS 2013的一个版本开始,微软在Azure DevOps Server中新增了原生的Git功能;这种内置的Git服务器,并不是像一些软件集成开源的GitLab那样,而是微软完全独立开发的Git服务器工具,支持所有标准的Git客户端工具。开发人员无需安装新的Git客户端工具,也不需要学习新的Git技术,就可以使用Azure DevOps Server中的Git来维护自己的源代码。

随着Git技术的发展,微软不断将新的Git成果集成到Azure DevOps中,其中包括拉取请求、分支管理、标记管理、提交记录的图形化、持续集成、勾子程序等。

对于TFVC中积累的优秀功能,同样迁移到了Git版本管理中,例如提交代码时,用户可以关联对应的开发任务或需求;用户推送一次提交后,也可以自动触发Azure DevOps Server中配置的流水线,实现持续集成、自动部署和自动测试等高级功能。

与TFVC一样,Git代码库的背后是强大的SQL Server;利用数据库的管理技术,可以支持Git版本管理的高效性和稳定性。

6. 全文索引

随着开发工作推进,Azure DevOps Server中存储了大量开发过程数据和开发成功数据。用于规划和跟踪工作的工作项,用于共享信息的wiki,用于跟踪代码文件更改的版本控制,以及帮助我们轻松发布的生成和发布服务。当开发团队的backlog和codebase扩展到多个项目、团队和存储库时,找到我们需要的数据变得越来越困难。为了最大限度地实现跨团队协作和共享,我们需要能够在所有项目中快速高效地定位信息的解决方案。Azure DevOps Server全文索引功能使我们可以搜索自己有权访问的所有项目、团队和存储库。

通过全文索引功能,我们只需使用Web浏览器,就可以轻松地从任何地方、任何计算机或移动设备在所有项目中搜索信息。我们还可以缩小结果的范围,并通过使用过滤器进一步提高搜索的精确性。

7. 流水线

使用流水线功能实现持续集成(Continouse Intergration - CI)和持续发布(Continoue Deployment - CD)。随着近几年来的发展,微软产品组已经在流水线中添加了大量的功能;流水线已经可以支持主流的开发语言、开发框架和跨平台的开发环境,支持包括MSBuild、Maven、Ant、.Net Core、Android、Xcode、CMake、Docker、Go、Gradle、Grunt、Gulp等几乎全部的编译工具。

在流水线的控制管理和编排过程中,用户可以自己熟悉的YAML语言,也可以使用可视化的在线工具,实现所见即所得的编排工具。

对于大型的软件开发团队,系统管理员还可以使用分布式的部署,扩展多个用于编译的代理服务器,实现负载分布;用于编译的代理服务器,不仅可以安装到典型的Windows服务器中,还可以部署到Linux、MacOS等虚拟机或物理机中,还可以部署在Docker容器中。

通过流水线的编排,我们可以实现自动化的编译、单元测试、制作升级包;也可以实现对不同环境的自动部署,例如自动部署测试环境、生成环境;还可以在部署过程中实现流程管控,让具有相应权限的管理员审批或验证之后,才可以执行后续的工作;还可以在部署完成后,自动执行已经编排的自动化测试程序,包括基于UI的自动化测试、基于接口的性能测试、基于安全的漏洞扫描等。

8. 测试管理

Azure DevOps Server中的测试管理工具叫做Test Plans(测试计划),测试计划是提升软件产品质量的关键工具。

测试计划是一个跨平台的质量工具,它可以运行在任意架构的平台中。运行在Web门户中的测试计划,我们可以似乎用任何支持的浏览器运行其中的功能;在浏览器的兼容性方面,它支持几乎所有的主流的浏览器,包括Edge、Chrome、Firefox、Safari、Opera;甚至支持官方未声明的360浏览器、搜狗浏览器、QQ浏览器;如果你使用手机访问Azure DevOps Server,你会发现它甚至支持移动终端的呈现格式。

测试计划可以自动收集和上传丰富的测试数据,为开发人员重现Bug提供包含操作步骤和测试数据在内的多种数据;通过集成测试插件,还可以自动收集测试过程中的截屏、录屏、录音、代码覆盖率等数据,大幅提升测试人员的工作效率。这些收到到的测试数据,可以自动添加到测试人员创建的Bug中。

测试计划还可以实现端到端的跟踪能力。在Azure DevOps Server中,系统使用工作项关联技术实现端到端的跟踪能力;我们可以将需求、编译、测试和Bug关联其他各种类型的数据;用户可以在看板的卡片中展现这种关联关系。测试人员创建的Bug,可以自动展现在看板对应的需求中,也可以自动关联在对应的编译流水线中;利用这种端到端的跟踪关系,我们可以非常方便的分析需求的实现质量、软件版本的质量。

通过扩展测试计划,我们还可以将测试团队的工作分享到第三方平台中。例如我们可以从脑图工具中自动推送测试用例,也可以将发现的Bug推送到开发团队的移动门户中。

9. 制品库Artifacts

如果你是一位Java开发人员,应该是非常熟悉Java应用开发过程中的Maven的依赖包管理。是的,在Azure DevOps Server中,它包含了一个支持主流开发语言的依赖包管理工具,微软称呼它为Artifacts。Artifacts包含了NuGet、npm、Python、Maven、Cargo、和通用六种包管理工具。

在使用Azure DevOps Server的过程中,我们不再需要独立部署一个类似Nexus的包管理工具。Artifacts这个管理工具不仅可以作为私服,存储来自互联网上游源的依赖包,还可以发布软件开发团队提交的软件包。这种制品库管理工具,特别适合内网开发团队,尤其是对数据安全比较注重的金融、保险等相关的开发团队。开发人员不需要连接外网,将Azure DevOps Server设置为依赖包的来源后,就可以自动获取开发过程中的依赖文件。

10. 版本路径

自2006年微软发布第一个TFS版本,Azure DevOps Server已经经历了将近20年(2006-2025)的时间,它逐渐由一个单一的源代码版本管理工具,演变成包含了从需求到交付的全流程、全生命周期的研发管理平台;实际上,如果我们回顾它的前身Visual Sourcesafe(VSS),这个产品的发展历程会更加久远。

|---------------------------------|-------------|----------|---------|
| 产品名称 | 部署类型 | 发布年度 | 版本号 |
| Team Foundation Server 2005 | On-premises | 2006 | 8 |
| Team Foundation Server 2008 | On-premises | 2008 | 9 |
| Team Foundation Server 2010 | On-premises | 2010 | 10 |
| Team Foundation Service Preview | Cloud | | 2012 |
| Team Foundation Server 2012 | On-premises | 2012 | 11 |
| Visual Studio Online | Cloud | 2013 | |
| Team Foundation Server 2013 | On-premises | 2013 | 12 |
| Team Foundation Server 2015 | On-premises | 2015 | 14 |
| Visual Studio Team Services | Cloud | 2015 | |
| Team Foundation Server 2017 | On-premises | 2017 | 15 |
| Team Foundation Server 2018 | On-premises | 2018 | 16 |
| Azure DevOps Services | Cloud | 2018 | |
| Team Foundation Server 2019 | On-premises | 2019 | 17 |
| Team Foundation Server 2020 | On-premises | 2020 | 18 |
| Team Foundation Server 2022 | On-premises | 2022 | |

https://www.cnblogs.com/danzhang

Azure DevOps MVP 张洪君

相关推荐
安的列斯凯奇16 分钟前
JavaRestClient 客户端初始化+索引库操作
运维·jenkins
惟长堤一痕33 分钟前
黑马linux入门笔记(01)初始Linux Linux基础命令 用户和权限 实用操作
linux·运维·笔记
甄同学36 分钟前
【WPS】【WORD&EXCEL】【VB】实现微软WORD自动更正的效果
microsoft·word·wps
飞花舞者41 分钟前
nginx代理服务器配置不正确出现的小bug
运维·nginx·bug
ihengshuai1 小时前
Gitlab Runner安装与配置
前端·docker·云原生·gitlab·devops
编程乐趣2 小时前
Garnet:微软官方基于.Net 8开源缓存系统,可无需任何改动直接替代Redis,而且还更高性能!
microsoft·缓存·.net
CAD芯智库2 小时前
国产信创3D- 中望3D Linux 2025发布,助力企业高效转型国产三维CAD
linux·运维·3d
霍格沃兹测试开发学社测试人社区3 小时前
Jenkins质量门禁设计方案的深入探讨
运维·软件测试·测试开发·jenkins
YoungerChina3 小时前
浏览器输入http形式网址后自动跳转https解决方法
运维
petunsecn3 小时前
Docker compose 使用 --force-recreate --no-recreate 控制重启容器时的行为
运维·docker·容器