2016-04-25 34 views
0

我们正在尝试使用TFS,Visual Studio和Azure制定一个良好的连续部署设置。在我们公司,每个开发人员都有自己的Azure订阅,我们用于测试,以及我们可以部署的共享QA1/QA2/PROD订阅。我们为其中的每一个匹配TFS XAML构建定义,运行带参数的Powershell脚本和PublishSettings文件。将相同的Azure二进制文件部署到多个订阅

这一切都为我们提供了一组.cspkg和.cspkg文件,理论上我们可以将正确的cspkg与正确的cspkg一起部署到任何Azure系统。

现在我们遇到的问题是我们想要开始使用Redis缓存服务。安装nuget包会将特定于订阅的设置写入web.config,以指向缓存。这意味着现在cspkg专门针对Azure订阅进行了编译。

我们可以使用SlowCheetah来合并构建web.config文件,但这意味着我们将不得不为每个构建定义编译包,并且随着开发人员数量的增加,这显然将变得难以为继。

我正在寻找一种方法来保留我们的旧通用软件包并仍然使用Redis缓存。我们可以在app_start期间在代码中连接到缓存,但是我们不能用它来存储IIS会话状态。我知道Azure负载平衡器旨在让用户保持在同一台服务器上,但我不确定在我们交换服务器时,这将如何工作。

感觉就像我们正在接近错误的问题,应该有一个我们忽略的简单解决方案。

我们使用的是Azure工具2.6,Visual Studio 2013,TFS 2015r2。

回答

0

我认为总有3种方法可以做到这一点。

第一个是构建过程中的配置,它为您描述的一件事构建了一件事,这在大多数情况下都是不期望的。

第二个是部署过程中的配置,这意味着您打开cspkg文件,更改配置,然后在上载前将其放回,而无需重新编译。

3nd是部署后配置,有一个配置管理工具为您动态调整配置文件。

我们使用octopus deploy来存档#2上面,我们的CI工具提要章鱼用cspkg和cscfg,章鱼处理其余的。我绝对不会追求#1,但考虑#3也是一个有效的选择。

0

从今天起,我们将所有连接设置存储在.cscfg文件中。即使出于安全原因,我们也避免将任何生产连接字符串存储在源代码管理中,只有质量保证。我们有CI来进行QA,但不是生产。这种方式对我们来说效果很好,我们只是针对不同的环境(订阅)维护不同的.cscfg

但是,在不久的将来,我认为我们会转移到Key Vault。