Azure 静态 Web 应用程序:在 Azure DevOps 中转换 Blazor webassembly appsettings.json

Azure Static Web App: transform Blazor webassembly appsettings.json in Azure DevOps

我有一个具有以下结构的静态 Blazor Web 应用程序:

和 appsettings.json 中的以下设置:

{
  "ApiUrl": "http://localhost:7071/api/"
}

我还有一个带有以下 yaml 的 Azure DevOps 管道:

trigger:
  - main

pool:
  vmImage: ubuntu-latest

steps:
  - checkout: self
    submodules: true
  - task: AzureStaticWebApp@0
    inputs:
      app_location: '/Atlas.Blazor'
      api_location: '/Atlas.InternalHost'
      output_location: '/wwwroot'
      azure_static_web_apps_api_token: $(deployment_token)

如何在部署期间使用变量更新应用程序设置?

我认为在 Oryx 容器内发生的 build/deployment 期间不可能操纵配置文件。您可以做的是在管道 运行 期间操作文件,例如,标记特定于环境的配置值并在管道 运行 期间替换标记。要使用单个 json 文件(即只有一个包含本地主机值的文件存储在版本控制中)来实现此目的,您可以使用 Colin 的 ALM Corner 扩展集合中的 tokenizer- 和 replace tokens -task(https://marketplace.visualstudio.com/items?itemName=colinsalmcorner.colinsalmcorner-buildtasks).另一种选择是在版本控制中拥有多个特定于环境的配置文件,并在管道 运行.

期间通过 appsettings.json 复制一个特定的配置文件

不确定是否可以在此处使用静态 Web 应用程序环境变量,但如果有人使用 GitHub Actions 正在寻找它,请在此处添加它 - Azure Pipelines 尚不支持它们。

https://docs.microsoft.com/en-us/azure/static-web-apps/build-configuration?tabs=github-actions#environment-variables

最后成功了

trigger:
  - main

pool:
  vmImage: ubuntu-latest

  
steps:
  - checkout: self
    submodules: true
      
  - task: FileTransform@1
    inputs:
      folderPath: '$(System.DefaultWorkingDirectory)/Atlas.Blazor/wwwroot'
      fileType: 'json'
      targetFiles: '**/appsettings.json'
  - task: AzureStaticWebApp@0
    inputs:
      app_location: '/Atlas.Blazor'
      api_location: '/Atlas.InternalHost'
      output_location: '/wwwroot'
      azure_static_web_apps_api_token: $(deployment_token)