在CI构建管道中临时更新appsettings.json文件

时间:2019-09-11 16:06:34

标签: azure continuous-integration ef-migrations appsettings

我有一个在Azure DevOps CI管道中构建的.NET Core应用程序。在CI期间,我还使用dotnet ef migrations script命令从EF迁移生成sql脚本,然后在CD管道中运行该脚本。当我过去将连接字符串存储在appsettings.json文件中时,一切都很好。但是,情况不再如此,现在我将用户密钥用于本地版本,将Azure AppService应用程序设置用于已部署的版本。这意味着CI管道一旦尝试运行dotnet命令就会失败,因为连接字符串为空。我进行了研究,以查看是否可以在运行时动态地将连接字符串添加到dotnet command中,但这不是一个选择(尽管如此,但是看起来开发团队已经制定了计划)。我想到了在CI期间转换appsettings.json文件的想法。基本上,我将连接字符串存储在变量下,并通过使用File Transform任务将其注入到appsettings.json文件中。但是问题在于此任务将更新并保存文件,这意味着在发布过程中它将具有更新的文件。但是我想要的只是临时转换文件,这样我就可以运行dotnet命令而没有任何问题,并且也可以不部署带有连接字符串的json文件。你知道我怎么能做到这一点吗?

1 个答案:

答案 0 :(得分:0)

文件转换任务仅适用于变量。因此,我最终使用了Magic Chunk任务两次。转换appsettings.json的一项任务,以便在生成sql脚本之前具有连接字符串。第二个任务是相反的-再次转换appsettings.json,以便在生成迁移sql脚本后连接字符串将为空字符串。