2016-08-01 42 views
3

我们有一个非常简单的分支策略:与capistrano部署一次特定分支?

  • 开发 - >开发分支
  • 分期 - >临时服务器部署分公司
  • 主 - >生产中科

我们的生产部署工作流程开发 - >分期 - >主。我们总是首先进行部署,我们测试一段时间,然后部署到生产环境。

现在,我们在一个新的功能,我想测试正在努力。我不想把它放在舞台上,因为既然是实验性的,我不想锁定生产部署,直到功能完成。

有没有办法对Capistrano的说,我要为一个特定的部署分支,这样我就可以把这个实验代码分期进行测试呢?

OBS:我需要把分期的原因是,这段代码依赖于很多是在分期已配置外部资源,并就难以在本地复制。

回答

6

这里是我如何做到这一点。

在我config/deploy/staging.rb文件的顶部,我把这个:

set :branch, ENV.fetch("CAPISTRANO_BRANCH", "staging") 

这告诉Capistrano的是,当我运行cap staging deploy,使用staging分支默认,但允许通过CAPISTRANO_BRANCH环境变量来覆盖。

所以,现在如果我想部署一个定制的分支升级,它是如此简单:

CAPISTRANO_BRANCH=my-feature cap staging deploy 
+0

它实际上是一个好主意,谢谢。 – lcguida

+0

在mac终端中设置'CAPISTRANO_BRANCH变量像这样,不会让这个变量以轨道控制台内描述的方式访问。我以类似的方式使用它:export CAPSTRANO_BRANCH ='my_feature';您可以通过以下方式删除变量:unset CAPISTRANO_BRANCH(在zsh上测试) – Ekkstein