Ruby on Rails*功能*部署的最佳实践?

Mic*_*Cho 2 ruby production capistrano ruby-on-rails staging

我们在服务器上运行2个不同的环境 - 比如production.mydomain.com和staging.mydomain.com

暂存环境几乎与生产环境相同,只是它通常有几个正在审查的新功能(例如new_user_profile,image_tagging等).这些功能在不同时间由客户单独接受.

将任何单个功能(例如new_user_profile)从分段推送到生产的最佳方法是什么?

我们的设置如下所示,但您也希望听到您使用的替代方案:

  • Ruby on Rails
  • Git(我们有几个功能分支,在接近完成时会合并到一个"分段"分支)
  • Capistrano,多阶段分机.

我们尝试了以下两种方法,两种方法都不是很好:

  1. 在我们的代码中有很多if/else语句,例如new_user_profile ....
  2. 将各个git分支(例如,分支new_user_profile)部署到暂存,对其进行审核,然后合并到生产中

Ale*_*hov 5

使用此工作流程:

  1. 使用master分支作为生产分支,它始终通过测试和可部署
  2. 在Gitlab上使用每个功能的分支和GitHub上的Pull Requests或Merit Requests
  3. 使用CI服务(https://travis-ci.org/,https://circleci.com/)合并之前检查新的分支代码
  4. http://teatro.io/等阶段使用特殊服务,这将为每个功能分支自动创建并行阶段.将feature-stage的链接发送给客户端.
  5. 合并分支由CI和cutomer测试,以掌握并部署到生产