Bicep部署Azure Web App二次执行报错:ScmType冲突求助
解决Azure Web App二次Bicep部署ScmType冲突问题
问题原因
首次部署后,Web App的ScmType被设置为ExternalGit(可能是模板隐含配置、手动操作或后续触发的设置),二次部署时若模板未显式指定ScmType,或指定的类型与现有值冲突,ARM会抛出冲突错误。
解决方案
1. 保留ExternalGit作为部署源
在Bicep的Web App资源中显式声明scmType和对应的源控制配置,确保模板值与当前资源状态一致:
resource webApp 'Microsoft.Web/sites@2022-09-01' = { name: '<你的Web App名称>' location: '<区域>' properties: { serverFarmId: appServicePlan.id siteConfig: { scmType: 'ExternalGit' // 其他站点配置(如runtime、端口等) } // 关联外部Git仓库(按需配置) sourceControl: { type: 'ExternalGit' repoUrl: 'https://github.com/your-account/your-repo.git' branch: 'main' isManualIntegration: true // 若不需要自动部署,设为true } } }
2. 切换为无SCM源(如仅部署本地代码)
若要移除ExternalGit关联,需同时设置scmType为None并清空源控制配置:
resource webApp 'Microsoft.Web/sites@2022-09-01' = { name: '<你的Web App名称>' location: '<区域>' properties: { serverFarmId: appServicePlan.id siteConfig: { scmType: 'None' // 其他站点配置 } sourceControl: null // 清空现有源控制关联 } }
3. 切换到其他SCM类型(如LocalGit)
如果要改为LocalGit,需先按方案2部署一次清除ExternalGit关联,再部署以下配置:
resource webApp 'Microsoft.Web/sites@2022-09-01' = { name: '<你的Web App名称>' location: '<区域>' properties: { serverFarmId: appServicePlan.id siteConfig: { scmType: 'LocalGit' // 其他站点配置 } } }
关键注意点
- ARM部署对
ScmType的修改有严格限制,不能直接从ExternalGit切换到其他类型,必须先清空源控制(设为None)再切换。 - 始终在模板中显式声明
scmType,避免依赖ARM的默认值,防止部署时出现状态不一致。
内容的提问来源于stack exchange,提问作者learner
相关产品推荐
相关产品推荐

