我正在尝试使用VSTS(现在是Azure DevOps)来执行CI/CD管道.对于我的构建管道,我有一个非常基本的设置,涉及执行恢复,构建,测试和发布步骤.
对于我的测试步骤,我设置了运行两个测试项目 - 一个单元测试项目和一个集成测试项目.我有我的密钥保管库访问策略设置,以提供对我自己和Azure Devops的访问.当我使用visual studio在本地运行我的测试时,当我登录到可以访问azure密钥库的同一帐户时,我可以毫无错误地运行测试.
我的应用程序配置为使用以下设置访问密钥保管库:
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((ctx, builder) =>
{
var keyVaultEndpoint = GetKeyVaultEndpoint();
if (!string.IsNullOrEmpty(keyVaultEndpoint))
{
var azureServiceTokenProvider = new AzureServiceTokenProvider();
var keyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));
builder.AddAzureKeyVault(keyVaultEndpoint, keyVaultClient, new DefaultKeyVaultSecretManager());
}
}
)
.UseStartup<Startup>();
Run Code Online (Sandbox Code Playgroud)
当我运行构建管道时,我正在使用Hosted VS2017实例来构建我的项目.除了尝试访问密钥库的集成测试失败之外,一切都在运行.我使用以下包:
我按照本教程https://docs.microsoft.com/en-us/azure/key-vault/tutorial-web-application-keyvault来设置密钥保险库并将其集成到我的应用程序中.
我只是试图通过确保单元和集成测试通过来使我的构建工作.我还没有将它部署到应用服务中.单元测试没有任何问题,因为我在嘲笑各种服务.我的集成测试失败,出现以下错误消息.如何获得对密钥保管库的测试访问权限?我是否需要为托管VS2017构建的密钥保管库添加任何特殊访问策略?不知道该怎么办,因为我没有看到任何突出的东西.
下面是错误的堆栈跟踪:
2018-10-16T00:37:04.6202055Z Test run for D:\a\1\s\SGIntegrationTests\bin\Release\netcoreapp2.1\SGIntegrationTests.dll(.NETCoreApp,Version=v2.1)
2018-10-16T00:37:05.3640674Z Microsoft (R) Test Execution Command Line Tool Version 15.8.0 …Run Code Online (Sandbox Code Playgroud)