将连接字符串与源代码控制分开,并能够在 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 是安全存储数据库服务器凭据等秘密的好地方;这使它们不受源代码控制。
一般做法是:
- 提前将数据库服务器密码保存为密钥库密码
- 在管道中,使用 Azure Key Vault task 获取数据库服务器密码;它现在可以作为管道中的秘密变量使用
- 在后续任务中使用数据库服务器密码;直接,或按照 Krzysztof Madej 的回答
中所述代入应用程序设置
我有一个 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 是安全存储数据库服务器凭据等秘密的好地方;这使它们不受源代码控制。
一般做法是:
- 提前将数据库服务器密码保存为密钥库密码
- 在管道中,使用 Azure Key Vault task 获取数据库服务器密码;它现在可以作为管道中的秘密变量使用
- 在后续任务中使用数据库服务器密码;直接,或按照 Krzysztof Madej 的回答 中所述代入应用程序设置