使用Capistrano将特定的git分支部署到暂存服务器

5
我有一个用于部署到测试服务器的 master 分支,还有一个用于部署到生产服务器的 stable 分支。我使用的capistrano脚本就是这样设置的。
当前的工作流程如下: 每当生产环境出现问题,我就从 stable 分支分离出一个新分支,修复问题,提交更改,将其与 stable 合并,然后部署到生产环境。
这样我就没有机会在测试服务器上测试这个bug fix(发生在hot fix branch中)。理想情况下,我想要:
期望的工作流程: 每当生产环境出现问题时,我从 stable 分支分离出一个新分支,修复问题,提交更改,将其与 master 合并,在测试服务器上部署和测试该fix,验证其是否有效,然后将此 hot fix 分支合并到 stable 上并部署到生产环境。
请问如何使用Capistrano来实现这个目标?请帮忙。
2个回答

7
免责声明:如果我误解了你的问题,请原谅,但我认为你已经回答了自己的问题。
你的Git工作流只是你的“git工作流”。与Capistrano没有什么关系。Capistrano将获取您想要的任何内容,由您决定如何合并和分支您的repo,使其达到部署点。
根据你的话,我假设你已经设置好了cap阶段以部署正确的分支,但如果你没有,下面有一个例子。这将为每种类型的部署获取不同的分支。
deploy.rb
  set :stages, %w(staging production)
  set :default_stage, "staging"

部署 / 部署.rb #cap 部署

  set :branch, 'master'

deploy/production.rb #使用cap命令进行生产环境部署

  set :branch, 'stable'

1
我认为他想要使用Capistrano部署任何分支,而不仅仅是上述提到的两个分支。 - asymmetric

3

这是一种流程,可以让您在测试staging环境的同时利用现有的Capistrano部署配置。我假设您的staging分支领先于master,并且已经安装了多阶段扩展的Capistrano。

  1. From master, create a hot fix branch, I use a naming convention for hot fix, for example hotfix-20121203

    git checkout -b hotfix-20121203 
    
  2. merge your hot fix branch into staging, deploy and test staging

    git checkout staging
    git merge hotfix-20121203
    cap staging deploy
    
  3. merge your hot fix branch into master, deploy and test master

    git checkout master
    git merge hotfix-20121203
    cap production deploy
    

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接