【问题标题】:Deploy once a specific branch with capistrano?使用 capistrano 部署一次特定分支?
【发布时间】:2016-08-01 13:39:59
【问题描述】:

我们有一个非常简单的分支策略:

  • develop -> 开发分支
  • staging -> Staging Server 部署分支
  • master -> 生产分支

我们的生产部署工作流程是开发 -> 登台 -> 主控。我们总是先部署到登台,测试一段时间,然后再部署到生产环境。

现在我们正在开发一个我想测试的新功能。我不想将它放在暂存中,因为由于是实验性的,我不想在功能完成之前锁定生产部署。

有没有办法向 capistrano 说我想要用于某个特定部署的分支,以便我可以将这个实验性代码放在暂存中进行测试?

OBS:我需要加入 staging 的原因是,这段代码依赖于很多已经在 staging 中配置的外部资源,并且很难在本地复制。

【问题讨论】:

  • “我们总是先部署到 staging,我们测试一段时间,然后再部署到生产环境”......所以在你们公司,“staging”真的意味着“QA”,对吧?

标签: deployment branch capistrano


【解决方案1】:

我是这样做的。

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

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

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

所以现在如果我想部署一个自定义分支到 staging,就这么简单:

CAPISTRANO_BRANCH=my-feature cap staging deploy

【讨论】:

  • 在 mac 终端中像这样设置 'CAPISTRANO_BRANCH 变量,不会以从 rails 控制台中描述的方式访问该变量。我让它以类似的方式工作: export CAPSTRANO_BRANCH='my_feature';之后您可以通过以下方式删除该变量: unset CAPISTRANO_BRANCH (tested on zsh)
猜你喜欢
  • 2011-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-28
  • 2010-12-04
  • 2017-12-27
  • 1970-01-01
相关资源
最近更新 更多