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

使用GitLab CI/CD构建Azure静态Web应用时遇产物目录缺失错误

解决Blazor升级.NET6后GitLab CI/CD构建路径不匹配问题

问题概述

将Blazor应用从.NET5升级至.NET6后,GitLab CI/CD流水线构建失败。配置的OUTPUT_PATH被自动追加了随机DeploymentId(如/bin/staticsites/a01ad955-5c79-40d0-a69d-40c19d278b3b-swa-oryx/app),导致构建工具找不到指定的输出目录,报错:

The app build failed to produce artifact folder: '/bin/staticsites/ss-oryx/app/wwwroot'. Please ensure this property is configured correctly in your deployment configuration file.

解决方法

1. 直接在项目文件中指定发布路径

修改Blazor项目的.csproj文件,添加发布目录配置,强制MSBuild输出到指定路径:

<PropertyGroup>
  <PublishDir>$(MSBuildProjectDirectory)/bin/staticsites/ss-oryx/app/wwwroot</PublishDir>
  <WebPublishMethod>FileSystem</WebPublishMethod>
  <DeleteExistingFiles>True</DeleteExistingFiles>
</PropertyGroup>

此配置会覆盖Oryx工具的自动路径生成逻辑,确保构建输出严格指向你定义的目录。

2. 在CI脚本中显式指定构建输出

放弃依赖默认构建模板,在.gitlab-ci.yml中直接编写dotnet publish命令,通过-o参数强制指定输出路径:

build:
  stage: build
  script:
    - cd $APP_PATH
    - dotnet publish -c Release -o /bin/staticsites/ss-oryx/app/wwwroot
  artifacts:
    paths:
      - /bin/staticsites/ss-oryx/app/wwwroot

这种方式完全绕过流水线变量的路径覆盖问题,直接控制构建输出位置。

3. 替换为Azure SWA标准变量(若使用相关部署模板)

如果你的流水线基于Azure Static Web Apps的GitLab集成,将OUTPUT_PATH替换为官方识别的APP_ARTIFACT_LOCATION变量:

variables:
  API_TOKEN: $DEPLOYMENT_TOKEN
  APP_PATH: '$CI_PROJECT_DIR/App.WebApp'
  APP_ARTIFACT_LOCATION: 'bin/staticsites/ss-oryx/app/wwwroot'

该变量会直接覆盖Oryx自动生成的带DeploymentId的路径。

验证步骤

  1. 重新触发流水线,查看构建日志,确认输出路径已匹配你配置的目录,无额外DeploymentId串。
  2. 若问题仍存在,检查流水线中是否有其他自定义脚本或第三方模板在修改输出路径,逐一排查冲突项。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 17:02:24