什么是使用Git +的Heroku(Ruby on Rails的)一个很好用的部署策略?
目前,我有我的起源Git仓库的工作方式:所有功能(或“故事”)的首次检出的树枝,然后得到合并主推原点。
什么推到原点/主触发拉新Rails代码的临时区域(简单轨道Web服务器)的脚本。
到时候,我推了新的生产版本的Heroku,我应该创建一个新的分支(被称为像production_version_121),并推动以某种方式对Heroku的?
理想情况下,我想挑选哪些从以前的开发版本,我应该包括到生产分支部件...测试,并推到Heroku的。
例如,我可能不希望所有最新的代码推送到生产。 我可能要功能“一”,我工作过的和功能“C”都合并到生产某种方式,在不包括实验性功能“B”,这需要更多的调试。
注:我要去尝试避免在Capistrano的第一和得到的东西手动工作了。
思考? 最佳做法?
在Gemcutter项目,我们只是有一个生产分公司。 我们希望看到对生产现场的任何更改得到合并到分支,然后与部署:
git push heroku production:master
该staging
分支提供类似目的的临时网站(也是在Heroku)
自从我读了文森特Driessen的是一个成功的Git分支模型 ,我已经上瘾了。 我的整个公司(US 8)现在已经标准化了这种模式和其他一些地方我已经与也使用它也开始协商。
我已经展示了它大多数人说,他们已经在做类似的事情,并发现它很容易适应。
概括地说,你有2个分支是永久性的(主和发展)。 大多数时候,你会仅仅是让分支开发和合并它们放回开发的。 事情变得有点复杂,当你进入做生产的排放和修补程序,但阅读后几次之后,就变成根深蒂固。
甚至还有一个叫做命令行工具git的流动来帮助你。
有多种方法去了解这一点,这真的取决于你的喜好。
我给你一个可能的策略,把我的头顶部:鉴于你已经有一个使用主自动化升级安装,我建议建立一个“生产”分支。 当你想促进修复/功能来制作,你只想合并特性分支到你的“生产”分支。
git checkout production
git pull . my-topic-branch
(resolve any conflicts)
当您准备好实际的代码推到生产服务器,你应该标记使用一个唯一的名称(可能带有时间戳)的分支。 然后,你只需按生产分支的Heroku。
git checkout production
git tag release-200910201249
我建议创建一个脚本或混帐别名自动为时间戳标记,因为使用一致的命名方案是非常重要的。 我用的是这样的:
git config alias.dtag '!git tag release-`date "+%Y%m%d%H%M"`'
这使我能够做到这类型git dtag
当我想用标记时间戳的释放。
您可以使用查看您的标签git tag
,并使用查看这些git show release-1234
。 有关标记的更多信息,运行git help tag
。 您也可以找到这个Github的指南上标注有帮助。 我也建议你阅读了其他人的工作流(这里是一个很好的书面记录 ),并挑选你的作品。