通过capistrano将特定的git分支部署到登台服务器

时间:2011-11-06 05:24:53

标签: ruby-on-rails git capistrano

我有用于部署到登台服务器的master分支。我有用于部署到生产服务器的stable分支。我使用的capistrano脚本是这样设置的。

当前工作流程: 每当生产出现问题时,我都会从stable分支出来,修复,提交,将其与stable合并,然后部署到生产环境。

这使我无法在我的登台服务器中测试该错误修复(发生在该修补程序分支中)。理想情况下我想要的是:

通缉工作流程: 每当生产出现问题时,我从stable分支出来,修复,提交,与master合并,在登台服务器中部署并测试该修复,验证它是否有效,然后将该Hotfix分支合并到stable并将其部署到生产中。

如何使用Capistrano实现这一目标?请帮忙。

2 个答案:

答案 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是使用多阶段扩展设置的。

  1. 从master,创建一个hotfix分支,我使用命名约定进行热修复,例如hotfix-20121203

    git checkout -b hotfix-20121203 
    
  2. 将您的Hotfix分支合并到暂存,部署和测试暂存

    git checkout staging
    git merge hotfix-20121203
    cap staging deploy
    
  3. 将您的hotfix分支合并为master,deploy和test master

    git checkout master
    git merge hotfix-20121203
    cap production deploy