将ConnectionString与源代码控制分开,并能够在Azure CI / CD管道中执行集成测试

时间:2020-04-29 08:02:41

标签: azure azure-devops database-connection azure-pipelines

我有一个WebAPI项目,并且正在使用Azure CI / CD管道将其以天蓝色部署。该项目包含单元测试和集成测试。对于集成测试,它需要访问数据库。但是,由于我不想将连接字符串签入源代码管理,因此构建管道将始终失败。

所以,问题是存在哪些解决方案/功能或变通办法可以帮助我完成此方案?

2 个答案:

答案 0 :(得分:1)

您可以使用令牌替换任务来为配置文件提供连接字符串。为此,您需要安装并添加token replace task

,并为此配置:

enter image description here

您需要有这样的appsettings.json

{
  "ConnectionStrings": {
    "BloggingDatabase": "#{ConnectionString}#"
  },
}

在您的管道中,请变量ConnectionString

Variable Azure DevOps

您还可以将变量组与Azure KeyVault一起使用。对于该方法,请检查this blog post

答案 1 :(得分:0)

Azure Key Vault是安全存储数据库服务器凭据等机密信息的好地方;这使他们脱离了源代码控制。

一般方法是:

  1. 预先将数据库服务器密码保存为密钥库机密
  2. 在管道中,使用Azure Key Vault task获取数据库服务器密码;现在,它可以作为管道中的秘密变量使用
  3. 在后续任务中使用数据库服务器密码;直接或通过替换Krzysztof Madej的答案中所述的应用设置