什么是 Azure Pipelines?
Microsoft Azure Pipelines 是一种云服务,可用于自动生成、测试和部署代码项目。 你还可以将其提供给其他用户,并且它适用于几乎任何语言或项目类型。
Mara 很高兴能够在 Azure Pipelines 上复制团队的生成过程。 测试人员 Amita 终于有了一些空闲时间,她想要赶上进度。 Mara 认为现在正好可以把自己的计划告诉她:使用 Azure Pipelines 为 Space Game 网站设置自动化生成管道。
当她听到 Mara 的计划时,Amita 有点犹豫,但由于 Mara 的计划是复制生成过程而不是取代它,她也很好奇。 她知道生成过程需要一些改进。
Amita:这听起来很有趣,不过你一定是想证实它在 DevOps 方面的意义!
Mara:你真是太了解我了!
Amita:你希望看到哪些改进呢,特别是在要执行我们已经在执行的操作的情况下?
Mara:我认为只是移动到 Azure Pipelines 就会带来很多好处。 请记住,Azure Pipelines 是一种云服务。 我们可以使用它来自动生成和测试代码。 它也可供其他人使用。 它几乎适用于任何语言或项目类型。
我们的生成服务器有问题,即使保持最新也很困难。 Azure Pipelines 提供 Microsoft 托管和维护的生成服务器,因此它始终具有最新的修补程序和安全更新。 我们不必担心生成服务器的维护工作。
此外,我们还有由不同的人编写的各种脚本。 我们甚至不了解其中一些的工作原理。 Azure Pipelines 附带一个任务目录。 任务是已通过一组输入提取出的打包脚本或过程。 接下来,我会尝试将生成脚本执行的操作映射到这些任务。 我们至少可以实现标准化操作并提高自动化程度。
Azure Pipelines 适用于许多不同的语言和应用类型。 如果我们想要在这些方向扩展,不需要更换工具。
Amita:虽然有点儿自私,但我还是想问这与我何干? 我面临的一个大问题是:我从来不知道生成何时可供测试。 人们有时候记得更新电子表格,但很多时候都忘了。 仿佛我总是最后一个知道的人。
Mara:我们可以很轻松地解决这个问题。 我们可以将管道设置为在生成就绪时通过电子邮件或其他通知方式自动通知你。 你再也不需要等待其他人来提醒你。
Amita:好的,所以你现在的目标是生成应用,在它就绪时告诉我吗?
Mara:没错! 当然,我有更大的计划。 我想你们都会喜欢这个第一步,所以我想在它的基础上实现真正的持续集成。
Amita:给我五分钟时长的持续集成简要说明。
Mara:我画一幅图来说明吧。
Mara 走到白板旁,绘制管道。
Mara:这是我的 CI 管道。 CI 是每次团队成员将更改提交到版本控制时自动生成和测试代码的过程。 我知道我们还没有执行自动化测试,但请给它一点时间吧。
管道定义应用的持续集成过程。 它由名为“任务”的步骤组成。 你可以将其视为定义如何运行生成、测试和部署步骤的脚本。 我将尝试将脚本映射到任务。
管道在提交代码更改时运行 。 可以将管道配置为自动运行,也可以手动运行。 将管道连接到源存储库,例如 GitHub、Bitbucket 或 Subversion。 在此冲刺中,我们的任务之一是开始使用 GitHub,因此我们将在此项目中使用 GitHub。
生成代理 用于生成或部署代码。 生成或部署运行时,系统开始运行一个或多个作业。 代理是可安装的软件,一次运行一个生成或一个部署作业。 我们使用的是 Azure Pipelines,所以可以使用 Microsoft 托管的代理。 Microsoft 托管的代理可以为你处理维护和升级操作。 每次运行管道时,都会获得一个新的虚拟机。 有六个虚拟机映像可供选择,包括我们当前使用的 Ubuntu 22.04。
管道的最终产品是生成工件。 将工件视为测试或部署应用所需的最小编译单位。 例如,工件可以是:
- 打包到 .jar 或 .zip 文件中的 Java 或 .NET 应用。
- C++ 或 JavaScript 库。
- 虚拟机、云或 Docker 映像。
这就是所有的操作。 我知道我们可以做到。
Amita:听起来不错。 我们来看一看你需要执行哪些操作才能使其运作起来,以及需要多长时间。 你可以向我们演示。
Mara:好的!
管理生成代理
现在,你和团队已熟悉 Azure Pipelines,接下来我们可以进一步了解生成代理。 生成代理是一种可安装的软件,一次运行一个生成或部署作业。 生成代码或部署软件至少需要一个代理。 添加更多代码和人员后,就需要多个代理。 代理主要分为两类。
Microsoft 托管代理是由 Microsoft 管理的代理,可为你处理维护和升级操作。 每次运行管道时,管道中的每个作业都会获得新代理。 在本模块中,当你选择“使用 Microsoft 托管代理的本地开发环境”时,你将在 Microsoft 托管代理上运行管道。 若要在 Microsoft 托管代理上运行管道,则组织必须至少有一个 Microsoft 托管的并行作业。 检查 Microsoft 托管的并行作业计数,以确保至少有一个 Microsoft 托管的并行作业。 如果 Microsoft 托管的并行作业计数为零(新的 Azure DevOps 组织通常有零个并行作业),则可以请求免费授权。 免费授权的审批流程通常需要 2-3 个工作日。
自承载代理是由你管理的代理。 需通过安装代理软件和所需工具来配置虚拟机或容器,并将代理注册到 Azure DevOps。 在本模块中,选择“使用自托管代理的 GitHub Codespaces 开发环境”时,将使用在 GitHub Codespaces 容器中运行的自托管代理。 在 GitHub Codespaces 容器上自承载代理不是典型的生产场景,但它确实提供了完成此训练模块的环境。