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

Seperating ConnectionString from source control and be able to perform integrating testing in Azure CI/CD pipeline

我有一个 WebAPI 项目,我正在使用 Azure CI/CD 管道在 azure 中部署它。该项目包含单元测试和集成测试。对于集成测试,它需要访问数据库。但是由于我不想将我的连接字符串签入源代码管理,构建管道总是会失败。

所以,问题是有什么 solutions/features 或解决方法可以帮助我完成这种情况?

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

对于此配置:

你需要这样的appsettings.json

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

在您的管道中请变量 ConnectionString:

您还可以将变量组与 Azure KeyVault 一起使用。对于那个 appeoach,请检查 this blog post.

Azure Key Vault 是安全存储数据库服务器凭据等秘密的好地方;这使它们不受源代码控制。

一般做法是:

  1. 提前将数据库服务器密码保存为密钥库密码
  2. 在管道中,使用 Azure Key Vault task 获取数据库服务器密码;它现在可以作为管道中的秘密变量使用
  3. 在后续任务中使用数据库服务器密码;直接,或按照 Krzysztof Madej 的回答
  4. 中所述代入应用程序设置