将 GitHub Copilot 与 Azure 开发人员 CLI 配合使用

Azure 开发人员 CLI (azd) 与 GitHub Copilot 集成,用于在命令失败期间 azd init 提供 AI 辅助项目基架和智能错误故障排除。

运行 azd init时,azd 会显示一个 设置 GitHub Copilot(预览版)选项。 如果选择,Copilot 会分析代码库,并根据代码的语言、框架和依赖项生成 azure.yaml、基础结构模板和部署配置。 Copilot 驱动的 init 同时支持新项目和现有项目。

命令azd失败时,azd可以使用 Copilot 分析错误,建议修复方案,并可以选择自动应用修复。

先决条件

若要使用这些功能,需要:

  • azd 1.23.11 或更高版本 — 运行 azd version 以检查或 azd update 获取最新。
  • GitHub Copilot 访问 - 有效的 GitHub Copilot 订阅(个人、商业或企业)。
  • GitHub CLI (gh - azd 根据需要自动检查并提示登录。
  • GitHub CLI (gh - 安装 GitHub CLIazd 根据需要自动检查 gh 身份验证并提示登录。

使用 Copilot 和 azd init 搭建项目

以下示例演示如何使用 Copilot 驱动的 init 为具有 PostgreSQL 依赖项的 Express API 项目搭建基架。

在进行任何更改之前,流程将运行预检。 它会验证 git 工作目录是否干净,因此没有未提交的工作处于危险状态。 它还会提前提示同意模型上下文协议(MCP)服务器工具的使用权限,以便可以查看 Copilot 访问哪些工具。

  1. 运行 azd init 并选择 使用 GitHub Copilot(预览版)进行设置

    azd init
    # Select: "Set up with GitHub Copilot (Preview)"
    
  2. Copilot 检查项目结构,并从项目文件中检测 Express 框架和 PostgreSQL 依赖项。

  3. Copilot 确定服务的相应 host 类型 (containerapp) 和 languagejs)。

  4. Copilot 使用正确的服务配置生成一个 azure.yaml

  5. Copilot 基于检测到的依赖项为 Azure 容器应用和 Azure Database for PostgreSQL 创建 Bicep 模块。

  6. 在将生成的文件写入磁盘之前,先查看并批准这些文件。

基架完成后,通过照常运行 azd up 来预配和部署项目:

azd up

有关azd up工作流的更多信息,请参阅了解 azd up 工作流

AI 辅助错误故障排除

命令 azd 失败时, azd 可以使用 Copilot 分析错误并建议修复。 Copilot 使用项目配置和错误详细信息在终端中提供上下文特定的故障排除建议。 可以从多个交互式选项中进行选择,配置默认行为,或者让 Copilot 自动修复并重试。

Copilot 故障排除选项

命令失败时, azd 显示包含四个选项的交互式提示。 使用箭头键选择选项,然后按 Enter

  • 解释 — 获取一个纯语言的解释,说明出了什么问题。
  • 指导 - 接收解决问题的分步说明。
  • 诊断和指南 - 获取有关所发生情况的故障排除步骤、错误发生的原因以及如何修复它。 让 Copilot 在获得您的批准后应用修复,然后可以选择重试失败的命令。
  • 跳过 — 手动消除并处理错误。
? How would you like to proceed?  [Use arrows to move, type to filter]
> Explain
  Guidance
  Diagnose and Guide
  Skip

Copilot 使用项目配置、失败的命令以及错误详细信息来提供特定于情况的建议。

设置默认错误处理行为

如果希望一致地使用相同的选项,请设置默认值 azd config 以跳过交互式提示:

azd config set copilot.errorHandling.category troubleshoot

可用值为copilot.errorHandling.category:

Value Behavior
explain 自动获取通俗语言说明。
guidance 自动获取分步修复说明。
troubleshoot 自动诊断和指导。
fix 自动应用修复。
skip 始终忽略 Copilot 的故障排除。

还可以启用自动修复并重试,因此 Copilot 应用修补程序并自动重新运行失败的命令:

azd config set copilot.errorHandling.fix allow

若要重置为默认交互式提示,请取消设置配置:

azd config unset copilot.errorHandling.category

Copilot 帮助解决的常见 Azure 部署错误

以下示例显示了常见的 Azure 部署错误,以及 Copilot 辅助故障排除如何帮助你解决这些问题。

MissingSubscriptionRegistration — 资源提供程序未注册

首次部署到订阅时常常失败:

ERROR: deployment failed: MissingSubscriptionRegistration:
The subscription is not registered to use namespace 'Microsoft.App'.

Azure 要求先注册资源提供程序,然后才能创建某些资源类型。 如果此容器应用部署是给定订阅中的第一个部署, Microsoft.App 则尚未注册。 故障排除选项可以注册提供程序并自动重新运行部署。

SkuNotAvailable / OperationNotAllowed — SKU 或配额限制

可能会遇到 SKU 可用性错误:

ERROR: deployment failed: SkuNotAvailable:
The requested VM size 'Standard_D2s_v3' is not available in location 'westus'.

或配额变体:

ERROR: deployment failed: OperationNotAllowed:
Operation results in exceeding quota limits of Core.
Maximum allowed: 4, Current in use: 4, Additional requested: 2.

当某个区域受容量限制或订阅达到其 vCPU 限制时,这些错误很常见。 Copilot 的 “说明 ”选项阐明了哪些 SKU 或配额被阻止, 指南 建议可用的备用区域或虚拟机(VM)大小,或演示如何请求增加配额。

StorageAccountAlreadyTaken — 全局唯一名称冲突

ERROR: deployment failed: StorageAccountAlreadyTaken:
The storage account named 'myappstorage' is already taken.

存储帐户名称在所有 Azure 中必须是唯一的。 Copilot 建议将您的 Bicep 参数或 azure.yaml 环境变量更新为唯一名称,通常通过附加环境名称或随机后缀来实现,然后重试部署。

请求帮助

有关如何提交 bug、请求帮助或为 Azure 开发人员 CLI 提出新功能的信息,请访问 troubleshooting and support 页。