如何有效地控制和部署第三方Rails Web应用程序?

时间:2012-08-17 22:19:05

标签: ruby-on-rails git deployment

部署自己的Rails应用程序非常简单。但是,我发现尝试将第三方Rails应用程序保留在版本控制下并进行部署非常痛苦。

假设我想要一个现有的RoR应用程序(在我的情况下它是Redmine,但这可以应用于任何应用程序,甚至超越Rails),并将其部署在我的(传统)托管服务器上。我想确保我可以撤消对配置或本地自定义所做的任何更改,但我也希望能够定期升级到最新版本。

Redmine的公共git存储库有一个.gitignore文件,其中包含配置yaml文件和会话存储等内容。这对于开发是有意义的,但肯定不适合部署。

似乎我有几个选择:

  1. 在我的官方仓库副本中取消配置文件,并添加我的自定义,插件等。然后我可以将新版本合并到我的分支机构并处理冲突。
  2. 从官方存储库中保留一个没有历史记录的本地存储库。合并新版本将完全是手动的。
  3. 做一些更复杂的事情。多级分支/存储库?
  4. 这些选项对我来说都不是特别优雅或简单,所以我到目前为止采取了简单的方法:什么都不做。

    这似乎是一个常见问题,但我无法找到真正涵盖此问题的任何博客或问题。您如何处理部署第三方Web应用程序?

1 个答案:

答案 0 :(得分:0)

有些选择是:

使用capistrano进行部署。

有许多使用capistrano运行数据库迁移的教程,您可以将它们全部保存在git中

使用puppetchef进行迁移。

这样做的好处是能够设置和运行各种部署,包括添加服务器等。

秘密酱:持续部署

使用一个地方自动执行这些迁移。

设置一个CI服务器(例如:Jenkins),它监视上游存储库(originlive或其他)并执行在那里提交的迁移。此外,Jenkins可以设置为在repo中监视回滚,并在复制更新的代码之前执行免费的向下迁移

CI太大了?

如果CI设置过度,那么就有git托管/部署服务在中间做得很好。我使用Springloops进行简单部署,使用REST钩子在每个部署上执行数据库迁移。不幸的是,它只适用于“向上”迁移,“向下”迁移仍然是手工完成的。