【问题标题】:Deploying multiple ARM templates AzureDevOps部署多个 ARM 模板 Azure DevOps
【发布时间】:2026-01-26 10:20:02
【问题描述】:

我需要仅将修改后的资源部署到 Azure 生产,我们遵循基于中继的方法,使用 git 在源代码控制中管理 ARM 模板。

因此,我们从主管道和当前管道中删除了一个发布分支,将所有 ARM 模板和参数文件复制到一个放置位置,并且发布管道对每个组件都有单独的 ARM 部署任务。

  1. 每次添加新组件时,我们都需要修改发布管道以进行部署,有没有办法自动执行此操作?以便部署放置位置中可用的任何模板和参数文件。
  2. 在部署管道中,有什么方法可以识别特定版本的组件?由于提交历史记录将有多个由不同开发人员完成的拉取请求合并。

【问题讨论】:

  • ARM 部署是幂等的,所以如果资源没有改变它就不会改变..
  • 您还有一个假设命令,可用于在部署之前检查更改:docs.microsoft.com/en-us/azure/azure-resource-manager/templates/…
  • @Thomas 我不知道它们是幂等的,我会检查一下。如何在发布管道中动态选择模板及其参数,因为我不想为每个资源创建一个 ARM 部署任务。部分意图是,如果将来有新组件,我们希望避免修改发布管道。
  • 无论如何您都必须更新发布管道以覆盖 env 特定参数?
  • 组件伴随着其环境特定的参数文件,如component.dev.parameters.json等。所以想法是使用通配符和模式匹配来获取组件模板及其参数文件发布管道中的环境阶段。例如在开发阶段我们会使用 *. Dev.Parameters.Json 到其他环境阶段类似的开发特定参数。

标签: azure azure-devops azure-pipelines azure-resource-manager


【解决方案1】:

谢谢你,Thomas。发布您的建议作为帮助其他社区成员的答案。

您可以检查Azure Bicep并在其自己的文件中定义多个资源,它会为您生成ARM。也可以看看Using linked and nested templates when deploying Azure resources

Azure DevOps 中的 OOB 任务不允许您指定多个模板。

【讨论】:

    【解决方案2】:

    感谢@Thomas 指向 Azure Bicep,值得考虑更新。根据我们目前的设置,我想出了一种只部署修改后的模板的方法。

    我使用 git diff 在最新提交中查找修改的文件,然后使用 Azure CLI 部署文件。

    我已经在my blog post写的很详细了,如果有什么可以改进的地方请指教。

    【讨论】: