【问题标题】:Provide client secret to vsts release during deployment在部署期间为 vsts 发布提供客户端密码
【发布时间】:2019-02-06 07:26:48
【问题描述】:

我有一个 asp.net 核心应用程序,我们正在运行基于 xunit 的 E2E(端到端)测试进行测试。测试用例显然是一个独立于 asp.net 核心应用程序的项目。在 VSTS 发布管道的部署期间,我想将客户端密钥从 azure key-vault 读取到配置中。

目前我们在 xunit 测试项目中有 appsettings.json,我们使用 IConfiguration 框架将这些设置读入配置。现在我想将存储在密钥库中的客户端密码提供给上述配置。我可以使用 VSTS 管道中的密钥库任务将机密下载到变量中,但如何使用它将其注入 appsettings/config。

这是我的应用设置的外观:

AzureAd": { "ClientId": "SomeClientID", "ClientSecret": "" }

ClientSecret 为空,因为在 localhost 上它将从本地机器上的 userSecrets 中选择:https://docs.microsoft.com/en-us/aspnet/core/security/app-secrets?view=aspnetcore-2.2&tabs=windows

现在如何在 vsts 管道中运行任务时提供 ClientSecret。

【问题讨论】:

标签: asp.net-core azure-devops azure-pipelines xunit azure-pipelines-release-pipeline


【解决方案1】:
  • 在您的 VSTS 构建中添加变量 AzureAd:ClientSecret

检查您的代码是否添加了environment variable configuration provider。 (默认启用)

【讨论】:

  • 我说的是发布时间。我们正在使用 vsTest 运行测试用例,它不会获取环境变量。
  • 如何启动测试?使用dotnet test ?
  • 好的,我明白了,在发布工件之前,您需要在 appsettings.json 或 web.config 中设置变量。 VSTS 中没有内置的令牌替换任务,但您可以使用这个:github.com/qetza/vsts-replacetokens-task#readme 示例
  • 或者考虑使用Octopus deploy而不是VSTS来管理你的发布。使用 Octopus,您可以为每个环境定义变量。
  • @aguafrommars 在这种情况下可能没有,但是如果您将环境视为阶段,ADO 将允许stage specific variables
猜你喜欢
  • 2021-08-07
  • 1970-01-01
  • 2021-01-05
  • 2020-08-23
  • 2020-12-07
  • 1970-01-01
  • 1970-01-01
  • 2015-01-06
  • 2016-08-16
相关资源
最近更新 更多