Azure Pipeline

这是整个 Azure DevOps 的重头戏,也是微软愿意独立开放和打重金宣传的模块。虽然其他模块(限本地版)可以*的开启和关闭,但微软对该模块有一个强有力的口号:*“Build in any program, release to any platform”,也就是说,它可以编译任何程序,然后发布到任意平台。

当然,它也是做持续集成(CI)和持续部署(CD)的关键模块,就好比现在市面上其他流行工具,如 Jenkins、TeamCity、Bamboo 等等工具,但 Azure Pipeline 比他们更有优势

  • 界面更加人性化
    Jenkins 不说了,可以说就是给没有美感的程序员使用的,和任何互联网产品相比无疑是最丑的。

  • 操作更方便
    拖拖拽拽就能完成你想要的功能,基本上微软的产品都是围绕这个思路进行的。所以,Azure Pipeline 中集成了很多的任务供你选择,不怎么需要懂写完整的代码就能集成你想要的程序。

  • 更好地本地化语言支持
    Jenkins 据说有中文包,但某些好像也翻译不完全,TeamCity 和 Bamboo 根本只有英文版;而Azure DevOps 整套本地版支持本地化语言。

当然最大的优势就是和微软的 Azure 以及 .NET 结合咯,不过 .NET 已经不是微软的唯一选择了,任何语言任何平台都可以。

言归正传

首先看到左边的导航,有一个火箭图标的
Azure DevOpe —— Azure Pipeline

生成(Build)

你可以把服务器想象成你本地计算机,

  • 首先你得获取源代码,比如从远程的 github 或本地的 Azure Repos 仓库;
  • 然后使用工具对源代码进行编译,只有编译通过的代码才可以使用,当然取决于你使用的语言,如果是 Python 或者 Javascript 就不需要编译了;
  • 当然你也可以加入其它的部分,比如跑单元测试、代码安全扫描等等,但最终的结果是拿到一个可以被发布的包。

这就是一个管道模式,你配置要做的任务,它会一步一步的往下走,直至结束。

如果你是新项目,旁边会有这个提示
Azure DevOpe —— Azure Pipeline

点击这个“新管道”,就进入了配置页面。

获取源代码

Azure DevOpe —— Azure Pipeline
当然第一步就是获取源代码,没有源代码就无法编译打包。

配置管道

Azure DevOpe —— Azure Pipeline
右边已经有为特定语言配置好的任务,你只需要点击 “应用” 就会跳转到下一个页面

Azure DevOpe —— Azure Pipeline
我选择了一个 ASP.NET 的末班,它会给我自动生成这些步骤。右边就是为选择好的任务进行参数配置,这里就不细说了。

代理

在 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 上,服务器通过代理获取生成好的包,然后进行不同服务器的部署。

发布和部署没有代理就无法工作
这一章就不会细说怎么弄代理。

发布

就是将指定生成好的部署包,进行发布,当然这也是一个管道模式。
Azure DevOpe —— Azure Pipeline

项目

就是你要选择怎么进行部署,使用哪一个生成包进行部署。
Azure DevOpe —— Azure Pipeline
默认支持现在比较流行的几种模式。

阶段

就是你需要部署的环境

可以并行、或者串行,比如只有成功部署到了 DEV 环境,才能对 SIT 环境进行部署,或者一次性部署到多台服务器环境,比如我有5台DEV服务器。

大概看一个真实的例子吧
Azure DevOpe —— Azure Pipeline

变量

这个东西在 DevOps 中无处不在,和你编程一样,有时候你总不能到处都输入一大串字符串吧?例如部署的路径(D://wwwroot/xxxx/release/api/docker/…),所以使用变量可以让这些输入进行统一化。

就是你自定义的变量组

比如数据库字符串,你可以定义一组变量来进行配置,就好比你做系统的表单页面一样。
Azure DevOpe —— Azure Pipeline

任务组

就是自定义管道中的任务

你可以把你某个生成或部署的多个任务封装成一个任务组,这样的话就不需要每一次都提交一大串任务了,比如配置环境变量、获取组件包(Maven/Nuget/PIP/npm)、Tomcat 的配置、Web 站点的 url 等等。

Azure DevOpe —— Azure Pipeline

部署组

就是刚才说的部署代理

Azure DevOpe —— Azure Pipeline

总结

不管从界面上、易用性上我都推荐你使用 Azure Pipeline,当然收费模式你可以自己去官网看看,你不想用云的话,就自己搭建一个吧。

分类:

技术点:

相关文章: