【问题标题】:Best way to upgrade existing deployments to the latest version将现有部署升级到最新版本的最佳方式
【发布时间】:2011-06-13 15:35:31
【问题描述】:

我需要自动化将应用程序的现有部署升级到应用程序的最新稳定版本的过程。我目前有一个计划,通过将每个更改存储在升级应用程序中,然后按顺序从一个版本升级到每个新版本,直到我到达最新版本。每次我们有新的稳定版本时,我都会强制我的所有开发人员将升级代码添加到升级应用程序中。这不会那么复杂,除非我们有一个 MySQL 数据库,其中架构有时会更改并且我们添加存储过程。此外,我们通常必须换掉一些二进制文件。该应用程序由一个 Web 应用程序和一个 Windows 服务组成。

我的问题是,有没有更简单的方法可以做到这一点?在我看来,我应该能够打包 Mercurial 存储库并自动将更改推送到已部署的应用程序。我正在为应用程序使用 C#.NET、MySQL 和 ASP.NET。

【问题讨论】:

    标签: c# asp.net mysql deployment mercurial


    【解决方案1】:

    我理解您为什么需要对架构更改进行顺序升级,但为什么要对您的应用程序执行相同操作而不是一步升级?无论如何,有像 KwateeSDCM 或 Capistrano 这样的部署工具可以自动部署到 dev/qa/production 服务器。 KwateeSDCM 保留每个文件的 MD5 哈希值,这允许它进行差异升级,当您有大型应用程序且频繁升级且只影响小文件时,这非常好,因此它最终会执行您想要的操作。

    【讨论】:

    • 好吧,我想我的想法是,因为我必须按顺序逐步完成每个数据库修订(即,如果我在一个修订中添加了一列但在另一个修订中删除了另一列,这是唯一的方法来捕获它)程序的每个版本可能会或可能不会受到架构更改的影响。此外,除非我只是替换了升级中的每个文件,否则每个版本都会更改不同的文件。此外,还有一些 xml 文件,其中包含我不能丢失的配置信息。
    • 它还需要是顺序的,因为我们希望所有部署,可能有不同的版本由同一个应用程序升级。
    【解决方案2】:

    我只是想让我的一个程序员编写一个非常聪明的数据库脚本,它不需要存储顺序更改。它只会将当前架构与新架构进行比较并进行更改。这样我就不用担心了。

    【讨论】:

      猜你喜欢
      • 2018-12-26
      • 2012-04-21
      • 2022-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-17
      相关资源
      最近更新 更多