优势有哪些?
这是整个 Azure DevOps 的重头戏,也是微软愿意独立开放和打重金宣传的模块。虽然其他模块(限本地版)可以自由的开启和关闭,但微软对该模块有一个强有力的口号:“*Build in any program, release to any platform”,也就是说,它可以编译任何程序,然后发布到任意平台。
当然,它也是做持续集成(CI)和持续部署(CD)的关键模块,就好比现在市面上其他流行工具,如 Jenkins、TeamCity、Bamboo 等等工具,但 Azure Pipeline 比他们更有优势 :::info 持续集成(ContinuousIntegration, CI)、持续测试(ContinuousTesting)持续交付(ContinuousDelivery, CD)和持续部署(ContinuousDeployment, CD)。 :::
界面更加人性化
Jenkins 不说了,可以说就是给没有美感的程序员使用的,和任何互联网产品相比无疑是最丑的。
操作更方便
拖拖拽拽就能完成你想要的功能,基本上微软的产品都是围绕这个思路进行的。所以,Azure Pipeline 中集成了很多的任务供你选择,不怎么需要懂写完整的代码就能集成你想要的程序。
更好地本地化语言支持
Jenkins 据说有中文包,但某些好像也翻译不完全,TeamCity 和 Bamboo 根本只有英文版;而Azure DevOps 整套本地版支持本地化语言。
当然最大的优势就是和微软的 Azure 以及 .NET 结合咯,不过 .NET 已经不是微软的唯一选择了,任何语言任何平台都可以。
Pipeline是什么?
生成(Build)
你可以把服务器想象成你本地计算机,
首先你得获取源代码,比如从远程的 github 或本地的 Azure Repos 仓库;
然后使用工具对源代码进行编译,只有编译通过的代码才可以使用,当然取决于你使用的语言,如果是 Python 或者 Javascript 就不需要编译了;
当然你也可以加入其它的部分,比如跑单元测试、代码安全扫描等等,但最终的结果是拿到一个可以被发布的包。
这就是一个管道模式,你配置要做的任务,它会一步一步的往下走,直至结束。
如果你是新项目,旁边会有这个提示
点击这个“新管道”,就进入了配置页面。
当然第一步就是获取源代码,没有源代码就无法编译打包。
右边已经有为特定语言配置好的任务,你只需要点击 “应用” 就会跳转到下一个页面
代理
在 Azure Pipeline 中,代理分为两种,一种叫生成代理(Release Agent),另一种叫部署代理(Deploy Agent)。
代理是干什么用的?
言简意赅就是帮你跑管道任务的。
难道你会在某一个服务器安装各种语言的 SDK 吗?比如 Java 的JRE,.NET Framework 或 Python 等等,Java 和 Python 会安装在 Linux 服务器上,而 .NET 或 C++ 的只能在 Windows 服务器上安装,因此为了让服务器可以分布式,就有了代理。
每一台服务器安装一个代理,Azure Pipeline 根据你的配置和选择,去呼唤相应服务器的代理,然后帮你把源代码进行编译。
部署代理也是同理,可能A服务器要发布到 Tomcat 上,B服务器要发布到 IIS 上,C服务器需要部署在 Docker 上,服务器通过代理获取生成好的包,然后进行不同服务器的部署。
发布
就是将指定生成好的部署包,进行发布,当然这也是一个管道模式。
项目
就是你要选择怎么进行部署,使用哪一个生成包进行部署。
默认支持现在比较流行的几种模式。
阶段
就是你需要部署的环境
可以并行、或者串行,比如只有成功部署到了 DEV 环境,才能对 SIT 环境进行部署,或者一次性部署到多台服务器环境,比如我有5台DEV服务器。
大概看一个真实的例子吧
变量
这个东西在 DevOps 中无处不在,和你编程一样,有时候你总不能到处都输入一大串字符串吧?例如部署的路径(D://wwwroot/xxxx/release/api/docker/…),所以使用变量可以让这些输入进行统一化。
库
就是你自定义的变量组
比如数据库字符串,你可以定义一组变量来进行配置,就好比你做系统的表单页面一样。
任务组
就是自定义管道中的任务
你可以把你某个生成或部署的多个任务封装成一个任务组,这样的话就不需要每一次都提交一大串任务了,比如配置环境变量、获取组件包(Maven/Nuget/PIP/npm)、Tomcat 的配置、Web 站点的 url 等等。
部署组
就是刚才说的部署代理
总结
不管从界面上、易用性上我都推荐你使用 Azure Pipeline,当然收费模式你可以自己去官网看看,你不想用云的话,就自己搭建一个吧。