使用 capistrano 部署一次特定分支?

Deploy once a specific branch with capistrano?

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

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

现在我们正在开发一项我想测试的新功能。我不想把它放在试运行中,因为它是实验性的,我不想在功能完成之前锁定生产部署。

有没有办法告诉 capistrano 我想要一个特定部署的分支,这样我就可以把这个实验代码放在暂存中来测试它?

OBS:之所以要放在staging中,是因为这段代码依赖于很多已经在staging中配置的外部资源,很难在本地复制。

这是我的做法。

在我的 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