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

YAML流水线部署成功但SCM站点wwwroot文件不符问题求助

问题分析与解决方案

核心问题

配置的YAML流水线触发dev分支构建部署成功,但目标应用的wwwroot目录却是其他分支的文件,SCM接口显示未创建的master分支,修改环境变量后无效果。

可能原因

  1. 部署中心自动部署与自定义YAML冲突:在部署中心关联dev分支后,Azure会自动生成一条部署流水线,这条自动流水线可能在自定义YAML部署后覆盖了文件。
  2. 应用服务残留分支配置:应用服务的DEPLOYMENT_BRANCH环境变量被设置为master,导致部署逻辑优先加载该分支内容。
  3. 部署产物匹配规则问题:YAML中下载构建产物的路径匹配可能存在歧义,导致部署了旧的或错误的包。

解决方案

1. 关闭部署中心自动部署

  • 进入Azure门户的应用服务,打开「部署中心」,检查是否存在自动创建的流水线(命名通常包含分支名)。
  • 选择「断开连接」或关闭自动部署开关,避免自动流水线干扰自定义YAML的部署结果。

2. 修正应用服务环境变量

  • 进入应用服务的「配置」-「应用设置」,查找DEPLOYMENT_BRANCH变量:
    • 若存在,将值改为dev,或直接删除该变量(自定义YAML部署无需依赖此变量)。
  • 保存配置后重启应用服务。

3. 优化YAML部署逻辑

你的YAML脚本整体逻辑无问题,可做以下优化确保产物匹配准确:

  • 在AzureWebApp@1任务中,明确指定包路径,避免匹配错误的zip包:
    package: '$(System.ArtifactsDirectory)/drop/**/*.zip'
    
  • 手动触发dev分支流水线构建,在日志中确认Publish the project步骤输出的是dev分支代码,Publish artifacts步骤上传的产物正确。

4. 清理并重新部署

  • 通过SCM站点控制台执行命令清空wwwroot目录:
    rm -rf D:\home\site\wwwroot\*
    
  • 重新触发dev分支流水线部署,完成后检查wwwroot目录是否包含dev分支特有文件。

附你的YAML脚本:

trigger:
- dev

variables:
  solution: '**/*.sln'
  buildPlatform: 'Any CPU'
  buildConfiguration: 'Release'

stages:
- stage: Build
  jobs:
  - job: Build
    pool:
      vmImage: 'windows-latest'
    
    steps:
    - task: UseDotNet@2
      inputs:
        version: '8.x'
        includePreviewVersions: true

    - task: DotNetCoreCLI@2
      displayName: 'Restore project dependencies'
      inputs:
        command: 'restore'
        projects: '**/*.csproj'

    - task: DotNetCoreCLI@2
      displayName: 'Build the project'
      inputs:
        command: 'build'
        projects: '**/*.csproj'
        arguments: '--configuration $(buildConfiguration)'

    - task: DotNetCoreCLI@2
      displayName: 'Publish the project'
      inputs:
        command: 'publish'
        projects: '**/*.csproj'
        publishWebProjects: true
        arguments: '--configuration $(buildConfiguration) --output $(Build.ArtifactStagingDirectory)'
        zipAfterPublish: true

    - task: PublishBuildArtifacts@1
      displayName: 'Publish artifacts'
      inputs:
        pathtoPublish: '$(Build.ArtifactStagingDirectory)' 
        artifactName: 'drop'

- stage: Deploy
  jobs:
  - deployment: Deploy
    pool:
      vmImage: 'windows-latest'
    environment: 'production'
    strategy:
      runOnce:
        deploy:
          steps:
          - task: DownloadBuildArtifacts@0
            inputs:
              buildType: 'current'
              downloadType: 'single'
              artifactName: 'drop'
              downloadPath: '$(System.ArtifactsDirectory)'

          - task: AzureWebApp@1
            inputs:
              azureSubscription: '<subscription>'
              appName: '<appName>'
              appType: 'webApp'
              package: '$(System.ArtifactsDirectory)/**/*.zip'

内容的提问来源于stack exchange,提问作者ernest

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 17:25:04