【发布时间】:2021-04-12 22:36:59
【问题描述】:
我知道我可以使用环境变量在我的客户端 Blazor WebAssembly 项目中创建(和使用)不同的 appSettings.json 文件。
我想实现一个更通用、更灵活的解决方案,我可以在其中启动管道部署,例如传递在整个部署过程中使用的后缀,以完全自定义它。
因此,例如,如果我有一个后端和 blazor webassembly 客户端的简单案例,将“31”作为参数传递将生成一个 web api“api-31”和一个客户端“blazor-client-31” ' 知道他必须连接到 'api-31'。
我需要一种方法来在部署之前修改 appSetting.json 文件,或者像在 'UseEnvironmentVariables()' 中那样覆盖它...
我可以在 dockerizing 客户端时解决我的问题,比如
FROM base AS final
ARG apiprefix
WORKDIR /usr/share/nginx/html
COPY --from=build /src/publish/wwwroot/ .
COPY /WebApps/WebBlazor/nginx.conf .
RUN echo "{ \"apiprefix\": \"$apiprefixval\" }" > ExecutionContext.json
然后在客户端读取该 json 文件。也许它不漂亮,但它很简单,而且很有效。
直接从管道发布和部署时,是否有类似的东西(如果不是更好的话)?如何在用于托管 Blazor WebAssembly 的 web 应用中编写 json 文件(可能包含一些 PowerShell 代码)?
实际上我使用这些步骤来发布和部署:
- task: DotNetCoreCLI@2
displayName: 'Publish BlazorAssemblyClient'
inputs:
command: publish
projects: '**/BlazorAssemblyClient.csproj'
arguments: '--configuration $(buildConfiguration) --runtime win-x64 --output $(System.ArtifactsDirectory)/tempBlazorAssemblyClient'
modifyOutputPath: true
zipAfterPublish: true
- task: AzureRmWebAppDeployment@4
displayName: 'Deploy BlazorAssemblyClient'
inputs:
ConnectionType: 'AzureRM'
azureSubscription: '...'
appType: 'webApp'
WebAppName: $(blazorAppName)
packageForLinux: '$(System.ArtifactsDirectory)/tempBlazorAssemblyClient/**/*.zip'
在这个过程中,我看不到如何插入任何自定义内容。
感谢任何想提供帮助的人。
【问题讨论】:
标签: azure-devops blazor-webassembly blazor-client-side azure-pipelines-yaml