用途
本技能用于在 Azure DevOps 中搭建 CI/CD 流水线,配置构建与发布阶段,管理 Azure DevOps 项目与服务连接,并将应用部署到 Azure 或其他云平台。适用于创建 CI/CD 流水线、配置构建与发布阶段、管理服务连接、部署到 Azure 或其他云平台,以及设置多阶段 YAML 流水线等场景。
前置条件
- Azure DevOps 组织与项目
- 目标环境的服务连接
- 基本 YAML 理解
- Azure 订阅(用于 Azure 部署)
主要能力
YAML 流水线结构
在仓库根目录创建 azure-pipelines.yml,可定义触发器、池、变量、阶段与作业。示例结构包含 Build 与 Deploy 两个阶段,使用 NodeTool 任务、脚本步骤、发布产物,以及依赖 Build 阶段并仅在 main 分支成功时执行的部署作业。
触发器
支持分支触发器(include/exclude 分支与标签)、拉取请求触发器(pr 分支与路径过滤)以及计划触发器(cron 表达式、displayName、always 等)。
作业与阶段
支持并行作业、矩阵策略(如 linux/windows/macos 多平台)、作业依赖(dependsOn)。
变量与参数
支持变量组(group)、运行时参数(parameters,含类型、默认值与可选值)、以及通过流水线设置注入的机密变量,并在步骤中通过 env 传递。
模板
支持作业模板与阶段模板,通过 parameters 传入参数,在 azure-pipelines.yml 中以 template 引用,实现可复用组件。
部署
支持环境部署(deployment 作业与 environment)、审批门(在 Azure DevOps UI 的 Environments 中配置审批检查与审批人)、以及滚动部署(rolling 策略与 maxParallel)。
Azure 服务任务
提供 Azure Web App 部署(AzureWebApp@1)、Azure Container Apps(AzureContainerApps@1)、Azure Kubernetes Service(KubernetesManifest@0)、Docker 构建(Docker@2)等任务示例。
自托管代理
包含下载代理、配置(config.sh 使用 PAT 与池)、以服务方式安装与启动(svc.sh),以及在流水线中使用自托管池并指定 demands 的示例。
常见问题
列出服务连接失败、产物未找到、环境未找到三类问题及其排查方向。
使用方式
以 YAML 流水线为主,在仓库根目录创建 azure-pipelines.yml,按需组合触发器、阶段、作业、变量、模板与部署策略;审批门等部分配置需在 Azure DevOps UI 中完成。
最佳实践
- 优先使用 YAML 流水线而非经典编辑器
- 使用模板实现可复用组件
- 使用变量组管理共享配置
- 为生产环境配置环境审批
- 使用最小权限的服务连接
- 实现产物版本化
- 缓存依赖以加快构建
相关技能
github-actions(GitHub CI/CD 替代方案)、terraform-azure(Azure IaC)、azure-aks(AKS 部署)。
限制
- 指南会针对真实环境执行:应用任何内容前需确认目标、影响范围与回滚方案。
- 未经明确批准,切勿部署到生产环境。
- 仅导入文档:上游脚本与模板未随附。
示例
git status && git diff --stat kubectl diff -f manifest.yaml
本内容改编自 BagelHole/DevOps-Security-Agent-Skills(MIT);为符合上游要求补充了 frontmatter、When to Use/Limitations 与安全边界。仅导入文档:辅助脚本与模板未随附。