Microsoft AZ-400: 使用 Azure Pipelines 的 CI/CD 管道 — 学习指南

属于 Microsoft DevOps Engineer Expert AZ-400 — 学习指南. 使用经过验证的答案练习: Microsoft 考试中心, 或参加限时模拟考试: ExamRoll.io.

概述

Azure Pipelines 以代码形式提供端到端的 CI/CD,通过多阶段 YAML 流水线统一构建、测试和发布,同时保留企业级控制。要构建可扩展、安全且可重复的交付系统,精通 YAML 编写、触发器、代理、变量、模板、部署作业、工件、缓存和服务连接至关重要。

使用 YAML 和模板进行编写

一个 YAML 流水线由阶段 (stage)、作业 (job) 和步骤 (step) 组成。阶段模拟了生命周期的边界,如构建、测试、发布;作业在代理上执行,可以并行运行;步骤是在作业中执行的任务或脚本。依赖关系通过 dependsOn 显式声明,从而实现细粒度的编排和条件执行。多阶段 YAML 整合了 CI 和 CD,支持扇入/扇出模式,并将审批与环境绑定,而不是与独立的发布构造绑定。

模板支持在不同粒度上进行组合和重用:

模板在运行时执行之前于编译时进行评估。使用 ${{ }} 作为模板表达式,在编译时对流水线结构进行分支(例如,仅为主分支 main 包含某些作业)。宏语法 $(var) 和运行时表达式 $[ ] 在运行时解析,这会影响机密和变量组的可用时机。将共享模板存储在中央存储库中,并通过 resources repositories 导入;将其固定到特定分支或标签上,以实现确定性构建。

触发器、代理、变量和表达式

触发器管理自动化入口点:

代理和代理池决定作业的运行位置:

变量和参数驱动可配置性:

部署、环境、策略和门禁

部署作业 (Deployment job) 提供了一流的 CD 语义。部署作业以一个环境为目标,并根据控制发布和生命周期挂钩 (lifecycle hooks) 的策略来运行:

将部署逻辑编码为每个环境阶段 (stage) 的部署作业。利用环境检查来建立稳健的门禁,而不是使用临时的脚本轮询。当需要密钥时,应通过服务连接从 Azure Key Vault 中检索,而不是将它们嵌入到变量中。

工件、缓存和服务连接

工件 (Artifacts) 和缓存可以提高重用率和性能:

服务连接 (Service connections) 定义了 Azure Pipelines 用于访问外部系统的身份:

经典管道与 YAML 管道的对比及迁移

经典管道使用可视化设计器,将“生成 (Build)”和“发布 (Release)”作为独立概念。它们提供基于任务的创作、变量管理、发布环境和门禁 (gate)。YAML 管道则提供管道即代码 (pipeline-as-code)、多阶段统一、模板以及与存储库集成的强大版本控制。功能对等性已基本实现:环境审批和检查取代了发布门禁;部署作业 (deployment job) 用于对环境建模;管道工件 (pipeline artifact) 取代了生成工件 (build artifact);模板和 extends 则实现了大规模的集中治理。剩下的差异通常在于基于 UI 的手动干预和一些小众的发布设计器功能,这些在 YAML 中通过手动验证 (Manual Validation) 任务和环境检查来弥补。

一个务实的迁移路径如下:

  1. 盘点经典的生成和发布定义、任务、变量、环境、审批和门禁。
  2. 使用“导出为 YAML”助手将生成管道转换为 YAML,然后将其重构为模板以提高可重用性和可维护性。
  3. 将每个发布环境建模为一个 YAML 阶段,其中包含一个以环境为目标的部署作业。将发布门禁转换为环境审批和检查(例如,Azure Monitor 查询检查、工作项查询检查)。
  4. 将共享变量外部化到变量组中,并链接 Key Vault 以管理密钥。使用基于 OIDC 的服务连接替换服务主体的密钥。
  5. 将发布工件触发器替换为管道资源触发器。在 CI 阶段发布管道工件,并在 CD 阶段使用它们。
  6. 通过临时并行运行两种管道来验证功能对等性,然后进行切换,并根据适当的回滚计划停用经典定义。

实际问题场景

星巴克正在为其微服务平台标准化交付流程,并且必须从经典发布迁移到 YAML,同时强制执行性能门禁、降低凭据风险并加快构建速度。

  1. 使用 extends 模板编写多阶段 YAML
  1. 实现 CI、PR、计划和管道触发器
  1. 使用混合代理策略和代理池
  1. 使用变量组和运行时参数管理变量
  1. 使用环境、审批和检查来定义部署作业
  1. 应用金丝雀部署,然后是蓝绿部署策略
  1. 使用管道工件和缓存进行优化
  1. 使用 OIDC 和范围权限保护服务连接

这种端到端的设计将 YAML 即代码的治理与企业级的审批和检查相结合,通过缓存和工件加速交付,并通过 OIDC 和范围受限的服务连接加强安全性。


源码控制与仓库管理 · 所有领域 · 基础架构即代码与配置管理

练习这些题目 → · 在 ExamRoll.io 上限时练习 →

Pass the whole exam — not just this question

You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.

通过考试 →

浏览 Microsoft →

Related guides

一体化访问

一次订阅。所有考试。

所有计划均可无限制搜索答案、进行模拟测试、获取AI解释以及访问完整的资源库 — 支持20多种语言。

每月
24.87
Just €0.83/day
包含所有内容:
  • 无限答案搜索
  • 无限模拟测试
  • AI驱动的解释
  • 完整资源库
  • 20多种语言
  • 每周内容更新
  • 奖励与推荐
  • 优先支持
开始免费试用

无需信用卡*

最具价值
12个月
179.87
Just €0.49/daySave 40%
包含所有内容:
  • 无限答案搜索
  • 无限模拟测试
  • AI驱动的解释
  • 完整资源库
  • 20多种语言
  • 每周内容更新
  • 奖励与推荐
  • 优先支持
开始免费试用

无需信用卡*

✓ 包含免费计划 · ✓ 随时取消 · ✓ 所有计划均解锁完整产品