GitHub Actions测试ARM模板:--what-if与Validate模式的区别
两种Bicep模板测试方式的区别与选择
核心差异
deploymentMode: 'Validate'
这是ARM部署的「验证模式」,仅做基础合规性检查:- 验证Bicep/ARM模板的语法正确性
- 检查参数是否符合资源的要求(比如类型、取值范围)
- 确认当前部署账号拥有创建目标资源的权限
- 验证资源配置是否符合Azure的平台规则(比如资源命名规范、区域支持性)
但它不会模拟实际的资源变更,不会告诉你部署后会对现有资源产生哪些影响。
additionalArguments: "--what-if"
这是调用ARM的「What-If预览」功能,完全包含了Validate的所有验证逻辑,还额外提供了变更模拟能力:- 完成Validate的全部检查项
- 对比Azure现有资源状态与模板定义的目标状态
- 输出详细的变更清单:包括新增资源、修改的资源属性、需要删除的资源(如果有的话)
- 甚至会标记出「可能有破坏性的变更」,帮助你提前规避风险
选择建议
- 如果你的测试仅需确保模板本身合法、权限到位,用
Validate模式即可,它的执行速度更快。 - 如果需要提前预判部署带来的实际变更(这是生产环境部署前的关键检查步骤),直接用
--what-if就够了,它已经覆盖了Validate的所有能力,无需重复使用两种方式。
内容的提问来源于stack exchange,提问作者kirkec
相关产品推荐
相关产品推荐

