【问题标题】:Pass arguments to Blazor WebAssembly from pipeline build-publish-deployment从管道构建-发布-部署将参数传递给 Blazor WebAssembly
【发布时间】: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


    【解决方案1】:

    我需要一种方法来在部署之前修改 appSetting.json 文件,或者像在 'UseEnvironmentVariables()' 中那样覆盖它...

    我们可以安装扩展 Replace Tokens,添加变量并将变量设置为机密,然后添加任务 Replace Tokens 以替换 appSetting.json 变量并在 Azure DevOps 管道中使用它。

    更新1

    感谢安德里亚的分享。

    有一种标准方法,仅使用部署步骤,其中包括转换功能,我们可以参考此doc 了解更多详细信息。

    【讨论】:

    • 非常好的建议,确实!但我开始围绕这种方法进行调查,我发现有一种“标准”方法,只使用部署步骤,其中包括(我现在发现了!)转换能力:docs.microsoft.com/en-us/azure/devops/pipelines/tasks/…。如果您可以在答案中包含此参考,我会接受它,因为您确实帮助我找到了正确的解决方案(但我们也应该将其他用户指向其他解决方案......)。谢谢!
    • 嗨@Andrea,感谢您的分享,我已经更新了答案并添加了文档,您可以检查一下。祝你有美好的一天。
    猜你喜欢
    • 2020-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 2020-11-07
    • 1970-01-01
    相关资源
    最近更新 更多