【发布时间】:2021-10-26 00:20:12
【问题描述】:
我在 .NET 5 中有一个解决方案,在 NUnit 中有一些单元测试需要一些秘密才能正常工作。在 Visual Studio 中使用本地用户机密进行测试工作正常,但现在我想尝试使用 Azure Key Vault 进行集成并在管道内运行单元测试。
我添加了任务AzureKeyVault@2,根据日志,秘密下载很好,但在接下来的步骤中,单元测试失败,因为它在尝试访问时找不到一些密钥来自IConfiguration。
这是我的azure-pipelines.yml(仅相关部分)。
- job: Init
displayName: Unit Testing
variables:
solutionToBuild: 'Solution.sln'
unitTestsProject: 'UnitTests\UnitTests.csproj'
buildConfiguration: 'Release'
steps:
- task: DotNetCoreCLI@2
displayName: 'Restore Packages'
inputs:
command: 'restore'
projects: '$(solutionToBuild)'
verbosityRestore: minimal
feedsToUse: 'select'
- task: DotNetCoreCLI@2
displayName: 'Build Solution'
inputs:
command: 'build'
projects: '$(solutionToBuild)'
arguments: '-c $(buildConfiguration)'
- task: AzureKeyVault@2
displayName: 'Configure Key Vault'
inputs:
azureSubscription: '**-etc-**'
KeyVaultName: '**key-vault-name**'
- task: DotNetCoreCLI@2
displayName: 'Run Unit Tests'
inputs:
command: 'test'
projects: '$(unitTestsProject)'
arguments: '-c $(buildConfiguration) --collect:"XPlat Code Coverage"'
publishTestResults: true
我创建了这个目前在管道中失败的基本测试。我正在使用Host.CreateDefaultBuilder() 方法来初始化所有的单元测试。
[Test]
[TestCase("secret-key-1")]
[TestCase("secret-key-1")]
public void TestSecrets(string key)
{
Assert.NotNull(_config[key]);
Assert.IsNotEmpty(_config[key]);
}
AzureKeyVault@2 是否传递了 DotNetCoreCLI@2 任务的密钥和值,还是我需要额外的步骤?我读到您可以使用空的appsettings.json 来玩FileTransform@1 步骤,但我无法让它工作。有没有正确的方法来实现这一点?
【问题讨论】:
标签: azure-pipelines nunit .net-5 azure-keyvault azure-secrets