这是 Azure Developer CLI (azd) 的 7 月回顾。自上次发布以来共发布 5 个版本:1.27.0、1.27.1、1.28.0、1.28.1 和 1.29.0。以下是新功能、变更和修复内容,附带 PR 链接供深入了解。
有反馈或问题?欢迎加入 GitHub 版本讨论。
亮点:
- 新增
azd tool uninstall命令,完善工具安装、升级和卸载生命周期。 - 扩展支持通过
-s/--source直接从注册表位置安装,并通过--no-dependencies跳过依赖解析。 - 可在
azure.yaml中直接建模 Azure AI Foundry 项目、代理及相关资源。 - Azure App Service 容器部署支持通过
host: appservice和language: docker推送镜像并运行 Web App for Containers。 azd检测到 CI/CD 或 AI 代理环境时自动切换至非交互模式,命令将快速失败而非挂起等待提示。- 破坏性变更:
azd tool命令中的 skill--host标志已重命名为--agent。
🌐 Microsoft Foundry 亮相 AI Engineer World’s Fair
在 Pablo Castro(Microsoft)于 AI Engineer World’s Fair 发表的“On AI and Knowledge”演讲中,Microsoft Foundry 团队展示了基于 azd 扩展平台构建的命令行体验。这是扩展框架可交付成果的优秀范例,也是该平台旨在实现的那类 CLI 故事。观看 YouTube 演示片段 了解实际操作。感谢 Microsoft Foundry 团队在 azd 之上构建!
新功能
🔌 扩展
我们在这些版本中持续优化扩展安装与编写体验。
azd extension install、azd extension upgrade和azd extension list现支持通过-s/--source(URL 或本地路径)直接接受注册表位置,无需先运行azd extension source add。直接位置会在解析前被验证并注册为持久化源。[#8792]- 为
azd extension install新增--no-dependencies标志,可仅安装指定扩展而不解析或安装其声明的依赖。[#8927] - 将
azure.yaml中扩展的服务级env值暴露给扩展服务配置,使扩展可读取azd解析的相同环境值。[#8936]
🧰 工具管理
- 新增
azd tool uninstall命令,完善工具安装、升级和卸载生命周期。支持--all、--dry-run、交互式多选、按代理技能移除,以及--output json。[#8794]
🤖 Azure AI Foundry 建模
- 支持在
azure.yaml中直接建模 Azure AI Foundry 项目、代理及相关资源,包括$ref文件包含、默认安全网络,以及无需 Bicep 和 Terraform 的初始化路径。[#8818]
🏗️ 预配与部署
这些变更扩展了 azd 可部署的范围,并允许扩展参与预配验证,无论提供程序如何。
- 新增 Azure App Service 容器部署支持。配置为
host: appservice且language: docker(或docker.path)的服务现可将容器镜像推送到 Azure Container Registry (ACR) 并更新站点的容器配置,实现 Web App for Containers 场景。[#8847] - 新增与提供程序无关的
provision验证检查,在每个提供程序的预配前运行。具备validation-provider能力的扩展现可贡献客户端检查,无论预配提供程序是 Bicep、Terraform 还是扩展提供的提供程序,而不仅限于 Bicep 本地预检。[#9019]
🤖 CI/CD 与代理环境
- 当
azd检测到持续集成与交付 (CI/CD) 或 AI 代理环境时,自动启用非交互(无提示)模式,使命令快速失败并返回清晰错误,而非挂起等待提示。设置AZD_NON_INTERACTIVE=false可选择退出。确认提示在标准输入无更多输入时也会遵循默认值。[#9125]
破坏性变更
- 技能
--host标志现为--agent。 在azd tool install、azd tool upgrade和azd tool uninstall中,--host标志已重命名为--agent。azd tool list --output json和azd tool check --output json中的已安装技能现按每个代理展开为一行,并包含agent字段。请更新传递--host或读取旧格式的脚本与 JSON 消费者。[#9045]
🪲 已修复的错误
扩展与工具
- 修复
azd tool install azure-skills将 Visual Studio Code Copilot Chat 启动器存根误判为可工作的 Copilot Command Line Interface (CLI) 宿主。宿主选择现使用功能探测,因此安装不再在 macOS 上静默无操作,也不会在 Linux 上卡在 PATH 提示。[#8805] - 修复
azd tool uninstall在具有依赖项(如vscode-azure-tools)的 Visual Studio Code 扩展以及通过 Homebrew cask 在 macOS 和 Linux 上安装的 GitHub Copilot CLI 场景下的失败问题。卸载现可检测安装所属的包管理器并据此移除,在需要手动移除自管理安装时提供指导。[#8875] - 修复生成的
azd extension install补全,现在可提供扩展 ID 和.zip文件路径。[#8887] - 修复
azd extension install在 Windows 上因临时文件锁导致“拒绝访问”错误而间歇性失败的问题。[#9161] - 修复并发扩展更新
azure.yaml时丢失服务字段的问题,通过序列化项目配置写入解决。[#9211] - 修复并改进了项目扩展需求的自动安装,使
azd在项目命令运行前解析azure.yaml中声明或推断的所有缺失提供程序,而非在遇到第一个不支持的提供程序时失败。[#9218]
预配与配置
- 修复使用扩展提供服务主机或预配提供程序的项目在
azd env refresh时的行为,并在尚无部署时报告成功。[#9017] - 修复
azure.yaml序列化时为使用无代码资源主机(如azure.ai.project、azure.ai.connection和microsoft.foundry)的服务写入空project和language字段的问题;这些字段为空时现将被省略。[#8937] - 默认从模型目录和配额提示中排除已弃用的模型。[#8842]
- 停止将环境
.env文件中定义的动态链接器和加载器控制变量(如LD_PRELOAD、LD_LIBRARY_PATH、LD_AUDIT和DYLD_INSERT_LIBRARIES)转发到 docker、npm 和 python 等工具子进程。[#8949] - 修复
azd deploy对基于容器的 Azure App Service 服务覆盖无关站点配置的问题;容器镜像现通过专用的 App Service 配置端点更新。[#9281]
持续集成与更新
- 修复
azd down --no-prompt在 Terraform 项目的 CI/CD 中挂起的问题,通过在非交互运行时自动批准销毁;修复azd down --force在全新代理上因后端初始化错误而失败的问题。[#9143] - 修复
azd update后续命令使用azd version。感谢 @rguptar 的贡献![#9083]
其他变更
- 在扩展软件开发工具包 (SDK) 的
ServiceConfig上暴露服务的uses(依赖)列表,使扩展可直接读取服务和资源依赖,而非通过SetServiceConfigValue。[#8838] - 新增扩展 SDK 辅助方法,用于验证
extension.yaml中的提供程序声明与扩展代码注册的提供程序是否一致。[#9033] - 将 Azure 资源管理器 (ARM) 请求关联 ID 作为规范带连字符的全局唯一标识符发送,该 ID 从 OpenTelemetry 跟踪 ID 无损派生,而非未修饰的 32 字符字符串。此变更涵盖
azd直接 ARM 调用的x-ms-correlation-request-id标头以及传递给 Terraform AzureRM 提供程序的ARM_CORRELATION_REQUEST_ID值,使azd与 ARM 规范及其他 Azure 工具保持一致。[#9141] - 停止显示自动的
azd tool首次运行安装提示和定期更新通知。显式azd tool命令不受影响。[#9261] - 在
provision、up和down上发出infra.provider遥测属性,以便按基础设施提供程序对预配运行进行分段。[#9091] - 在
execution.environment遥测字段中识别来自 Microsoft Foundry Skill 的azd调用。[#9167] - 在
execution.environment遥测字段中将 GitHub Copilot 应用与 GitHub Copilot CLI 分别报告。[#9288] - 将捆绑的 GitHub CLI 更新至 v2.96.0。[#9245]
新文档
Microsoft Learn 上新增和更新的 azd 文档:
- 使用
azd tool管理 Azure 开发工具(7 月 27 日)——已更新以反映 1.28.1 变更,移除自动azd tool首次运行安装提示和定期更新通知,使参考文档与当前按需行为一致。 - 使用 Azure Pipelines 配置管道并推送更新(7 月 28 日)——更正了
azd pipeline config与 Azure DevOps 的 OpenID Connect (OIDC) 和联合凭证指导,并刷新了 GitHub Actions 和 Azure DevOps 的示例链接。 - 设置 Copilot 云代理开发环境(7 月 17 日)——已更新以反映“Copilot coding agent”重命名为“cloud agent”,包括全文的文件和链接更新。
azure.yaml架构参考(7 月 16 日)——已刷新 Azure AI Foundryazure.yaml统一变更,记录用于在azure.yaml中直接建模 Foundry 项目、代理及相关资源的 Microsoft Foundry 主机。
新模板
社区模板可帮助您更快上手,涵盖常见场景,并展示如何使用 Azure Developer CLI 部署真实解决方案。
- Azure Functions 计时器触发器快速入门 由 Azure Functions 团队 提供,将计时器触发器模式扩展至五种语言。每个示例均使用
azd部署到 Azure Functions Flex Consumption,采用托管标识和虚拟网络实现默认安全:- Python:使用 Python 编写的 Azure Functions 计时器触发器快速入门。
- JavaScript:使用 JavaScript 编写的 Azure Functions 计时器触发器快速入门。
- TypeScript:使用 TypeScript 编写的 Azure Functions 计时器触发器快速入门。
- Java:使用 Java 编写的 Azure Functions 计时器触发器快速入门。
- PowerShell:使用 PowerShell 编写的 Azure Functions 计时器触发器快速入门。
- Durable Functions fan-out/fan-in 快速入门 由 Azure Functions 团队 提供,在五种语言中演示 fan-out/fan-in 编排模式,每个示例均使用
azd部署到 Azure Functions Flex Consumption,采用托管标识和虚拟网络:- Java:使用 Java 编写的 Durable Functions fan-out/fan-in 快速入门。
- JavaScript:使用 JavaScript 编写的 Durable Functions fan-out/fan-in 快速入门。
- TypeScript:使用 TypeScript 编写的 Durable Functions fan-out/fan-in 快速入门。
- Python:使用 Python 编写的 Durable Functions fan-out/fan-in 快速入门。
- PowerShell:使用 PowerShell 编写的 Durable Functions fan-out/fan-in 快速入门。
- 远程 Model Context Protocol (MCP) Functions 示例 由 Azure Functions 团队 提供,展示如何在 Azure Functions 上构建和部署自定义远程 MCP 服务器:
- 使用 JavaScript 的远程 MCP Functions:此场景演示如何使用 Azure Functions 和 JavaScript 在云端构建和部署自定义远程 MCP 服务器,使用 Microsoft Entra 作为身份提供程序内置身份验证。
- 使用 Durable Functions 的长时间运行 MCP 工具 (.NET):一个 .NET 隔离的 Azure Functions MCP 服务器,通过 Durable Functions 和预算化 start-and-poll 模式支持长时间运行的 MCP 工具,使用 Durable Task Scheduler 后端和托管标识通过
azd部署。
- 使用 Azure Developer CLI (Terraform) 的 Azure Functions C# HTTP 触发器 由 Azure Functions 团队 提供:使用 C#(隔离工作进程)编写的 Azure Functions HTTP 触发器快速入门,使用 Terraform 作为基础设施即代码提供程序,通过
azd部署到 Azure Functions Flex Consumption,采用托管标识和虚拟网络实现默认安全部署。 - 使用 Azure API Management 和 Application Gateway 的 mTLS 由 Ronald Bosma 提供:演示通过 Azure API Management 和 Application Gateway 实现双向传输层安全 (mTLS)。展示如何在直接调用 API Management 以及在 Application Gateway 之后调用时验证客户端证书,以及如何使用 mTLS 保护从 API Management 到后端系统的连接。感谢 Ronald Bosma 的贡献!
Azure Developer CLI 模板库因社区贡献持续增长。感谢大家!
🙋♀️ 初识 azd?
如果您是 Azure Developer CLI 的新用户,azd 是一款开源命令行工具,可帮助您将应用程序从本地开发环境更快地部署到 Azure。它提供开发者友好的命令,映射到工作流的关键阶段,无论您是在终端、编辑器还是 CI/CD 中工作。
0 Comments
Log in to join the conversation.No comments yet. Be the first to share your thoughts.