RoL*_*LLs 3 git continuous-integration azure visual-studio azure-devops
因此,我通过许多博客/ SO帖子遵循了许多不同的想法/策略,但是我一直无法找到我的想法解决方案。
目标是使用Azure DevOps工具来提交我的项目更改,(通过Git)将更改推送到Azure DevOps存储库,让CI / CD按照管道规则构建项目,然后再部署到dev / production / etc。在所有这些期间,请将连接字符串置于源代码控制之外。
当前,我有一个网站(旧版Web应用程序),该网站在外部连接字符串文件(基于本文Connection Strings和Configuration Files)上具有本地连接字符串定义。它作为Azure上的应用程序服务托管。在我的.gitignore文件中,我使Git忽略了特定的连接字符串文件,因此它不在源代码管理中。使用Azure从GitHub进行部署的功能,该站点将使用GitHub中的源进行更新。但是,我必须手动上传带有错误/错误数据的连接字符串文件。我使用Azure的应用程序设置自行定义连接字符串。此过程运行良好。
我有一个新的.Net Web API项目,始于.Net Framework 4.7.2。我还按照该文章将连接字符串分成一个单独的文件,以便我也可以在源代码管理中忽略该文件。当Azure DevOps生成项目时,它会失败说:
C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Enterprise \ MSBuild \ Microsoft \ VisualStudio \ v15.0 \ Web \ Microsoft.Web.Publishing.targets(2603,5):错误:将文件ConnectionStrings.config复制到obj \ Release \ Package \ PackageTmp \ ConnectionStrings.config失败。找不到文件“ ConnectionStrings.config”。
显然,因为我没有将此文件添加到源代码管理中。主要是因为即使在开发过程中,我也需要放置实际的连接字符串用户名/密码。
存在哪些其他解决方案/功能可以帮助完成此方案?
简短的答案:不要在配置文件中放置秘密。
如果所有资源都驻留在Azure中,请使用托管服务身份,这样您就不必打扰连接字符串了。
如果不是,请使用ARM模板和与保管库关联的关键参数来管理您的Azure基础结构。Azure的Web应用程序允许您覆盖与应用程序设置/连接字符串配置文件的Web应用程序中。因此,只需使用密钥库来管理这些内容,然后告诉Web应用从密钥库中提取值即可。