我正在努力改进我们的构建/发布过程作为工作,但我遇到了障碍,我不确定这是因为试图做不可能的事情,还是只是我没有掌握一些概念。
作为源,我们有一个 C# asp.net 应用程序,其中包含四个适用于不同环境的 appsettings 文件。appsettings 是默认的 appsettings.json、appsettings.development.json、appsettings.test.json 和 appsettings.release.json
我们的环境是“dev”,它是本地开发人员的 PC,“test”是位于本地的测试服务器,“release”也是本地的,但位于面向公众的服务器上。稍后,发布服务器将作为 Web 应用程序出现在 azure 中。因此,最好以与 Azure 兼容的方式来完成此操作。
理想情况下,我希望有一个一次性构建的系统,我可以在其中构建代码并生成工件,然后将工件从开发提升到测试并最终发布。
这是一个不错的方法吗?我删除了除 appsettings.json 之外的所有 appsettings 文件,并添加一个构建管道来构建它,然后创建多个发布管道,每个环境一个管道,每个管道都有大量变量来配置 appsettings.json 文件以匹配环境它将被部署到?
理想情况下,我想保留不同的 appsettings 文件,以便对环境进行的所有更改都在那里配置,但我意识到在构建时操作 appsettings 文件的方式意味着这是行不通的。
希望得到一些意见,以便我可以开始设置。并提前致谢。
根据您的需求,您需要在项目中保留一个appsettings.json文件,并根据环境使用多个管道变量来配置appsettings.json文件。
这是 CI/CD 部署中的常见情况。
为了满足您的要求,我建议您可以使用每个管道中的内置任务:文件转换任务来替换 Appsettings.json 文件中的值。
这是一个例子:
应用程序设置.json
设置管道变量并使用文件转换任务:
有关更详细的信息,您可以参考此文档:JSON 变量替换