【问题标题】:Deploy the same Azure binaries to multiple subscriptions将相同的 Azure 二进制文件部署到多个订阅
【发布时间】:2016-04-25 19:15:51
【问题描述】:

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

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

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

我们可以使用 SlowCheetah 在构建时合并 web.config 文件,但这意味着我们必须为每个构建定义编译包,而且随着开发人员数量的增加,这显然会变得不可持续。

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

感觉我们处理问题的方法有误,应该有一个我们忽略的简单解决方案。

我们正在使用 Azure 工具 2.6、Visual Studio 2013、TFS 2015r2。

【问题讨论】:

    标签: azure deployment web-config devops


    【解决方案1】:

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

    第一个是构建期间的配置,即为您描述的一件事构建一件事,这在大多数情况下是不需要的。

    第二个是部署时的配置,也就是说你打开cspkg文件,改变配置,然后在上传之前放回去,不用重新编译。

    第三个是部署后的配置,有一个配置管理工具为你即时调整配置文件。

    我们使用octopus deploy 来归档上面的#2,我们的 CI 工具使用 cspkg 和 cscfg 提供 octopus,其余部分由 octopus 处理。我绝对不会追求#1,但认为#3 也是一个有效的选择。

    【讨论】:

      【解决方案2】:

      截至今天,我们将所有连接设置存储在 .cscfg 文件中。即使出于安全原因,我们也避免将任何生产连接字符串存储在源代码控制中,仅用于 QA。我们有用于 QA 的 CI,但没有用于生产。这种方式对我们很有效,我们只是为不同的环境(订阅)维护不同的 .cscfg

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

      【讨论】:

        猜你喜欢
        • 2019-01-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多