我们在服务器上运行2个不同的环境 - 比如,production.mydomain.com和staging.mydomain.com
暂存环境几乎与生产环境完全相同,只是它通常有几个正在审核的新功能(例如new_user_profile,image_tagging等)。这些功能在不同时间由客户单独接受。
将任何单个功能(例如new_user_profile)从分段推送到生产的最佳方法是什么?
我们的设置如下所示,但我们也希望听到您使用的替代方案:
我们尝试了以下两种方法,两种方法都不是很好用:
答案 0 :(得分:5)
使用此工作流程:
答案 1 :(得分:2)
如果没有额外的ifs,您最好的选择可能是在准备部署时将功能分支合并到主服务器中。或者,您可以实现功能切换模式。我不知道它有一个共同的宝石,但我在自己的项目中使用了类似的模式。 Martin Fowler写了一篇关于功能切换here的好文章,如果你想查看的话。他提出了一个非常有效的论点,即功能分支违背了持续集成的想法。我不是那么强烈,只要分支机构通过CI服务器,但你的milage可能会有所不同。我想看一个好的库,只使用具有功能切换功能的块,所以你可以这样做:
with_feature :something do
#code that should only be enabled with :something feature
end
虽然不知道一个很好的解决方案。制作一个宝石并将其放在github上:)
答案 2 :(得分:1)
我认为你应该将每个新功能保留在自己的分支中。在测试与staging
合并后,您可以首次将其与master
合并。
您可以尝试git cherry-pick移动提交的另一种方式属于从new_user_profile
到staging
的{{1}}