我们正在尝试使用TFS,Visual Studio和Azure进行良好的持续部署设置。在我们公司,每个开发人员都拥有我们用于测试的Azure订阅,以及我们可以部署到的共享QA1 / QA2 / PROD订阅。我们为每个提供了匹配的TFS XAML构建定义,使用参数和PublishSettings文件运行Powershell脚本。
这一切都为我们提供了一组.cspkg和.cspkg文件,理论上我们可以将正确的cspkg部署到任何Azure系统中。
我们现在遇到的问题是我们想要开始使用Redis缓存服务。安装nuget包会将特定于订阅的设置写入web.config,以指向缓存。这意味着cspkg现在专门用于Azure订阅。
我们可以使用SlowCheetah在构建时合并web.config文件,但这意味着我们必须为每个构建定义编译包,并且随着开发人员数量的增加,这显然会变得不可持续。
我正在寻找一种方法来保留旧的通用包并仍然使用Redis缓存。我们可以在app_start期间用代码连接到缓存,但是我们不能用它来存储IIS会话状态。我知道Azure负载均衡器旨在让用户保持在同一台服务器上,但我不确定当我们交换服务器进/出时它是如何工作的。
感觉我们正在接近错误的问题,应该有一个我们忽略的简单解决方案。
我们正在使用Azure Tools 2.6,Visual Studio 2013,TFS 2015r2。
答案 0 :(得分:0)
我认为总有3种方法可以做到这一点。
第一个是构建期间的配置,它为您描述的一件事构建一件事,这在大多数场景中是不可取的。
第二个是部署期间的配置,这意味着你打开cspkg文件,更改配置,然后在上传之前将其重新发送而不重新编译。
3nd是部署后的配置,有一个配置管理工具为你动态调整配置文件。
我们使用octopus deploy存档上面的#2,我们的CI工具Feed章鱼用cspkg和cscfg,章鱼处理其余部分。我绝对不会追求#1,但认为#3也是一个有效的选择。
答案 1 :(得分:0)
截至今天,我们将所有连接设置存储在.cscfg文件中。即使出于安全原因,我们也避免在源代码管理中存储任何生产连接字符串,只有QA。我们有QA的CI,但不是生产。这种方式对我们来说效果很好,我们只是为不同的环境(订阅)维护不同的.cscfg
然而,在不久的将来,我认为我们将迁移到Key Vault。