我有用于部署到登台服务器的master
分支。我有用于部署到生产服务器的stable
分支。我使用的capistrano脚本是这样设置的。
当前工作流程:
每当生产出现问题时,我都会从stable
分支出来,修复,提交,将其与stable
合并,然后部署到生产环境。
这使我无法在我的登台服务器中测试该错误修复(发生在该修补程序分支中)。理想情况下我想要的是:
通缉工作流程:
每当生产出现问题时,我从stable
分支出来,修复,提交,与master
合并,在登台服务器中部署并测试该修复,验证它是否有效,然后将该Hotfix分支合并到stable
并将其部署到生产中。
如何使用Capistrano实现这一目标?请帮忙。
答案 0 :(得分:7)
免责声明:如果我误解了您的问题,请原谅我,但我认为您已经回答了自己的问题。
你的Git工作流就是你的'git工作流'。与卡皮斯特拉诺没有任何关系。 Capistrano将获取您想要的任何内容,这取决于您希望如何合并和分支您的repo以使其达到部署点。
从你所说的我假设你已经设置了你的帽阶段来部署正确的分支,但如果你没有,那么下面有一个例子。这将为每种类型的部署获取不同的分支。
deploy.rb
set :stages, %w(staging production)
set :default_stage, "staging"
deploy / staging.rb #cap deploy
set :branch, 'master'
部署/生产.rb #cap生产部署
set :branch, 'stable'
答案 1 :(得分:3)
这是一个流程,可让您测试升级并仍然利用现有的capistrano部署配置。我在这里假设你的临时分支领先于大师,并且Capistrano是使用多阶段扩展设置的。
从master,创建一个hotfix分支,我使用命名约定进行热修复,例如hotfix-20121203
git checkout -b hotfix-20121203
将您的Hotfix分支合并到暂存,部署和测试暂存
git checkout staging
git merge hotfix-20121203
cap staging deploy
将您的hotfix分支合并为master,deploy和test master
git checkout master
git merge hotfix-20121203
cap production deploy