You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 18:22:35