使用 capistrano 部署一次特定分支?
Deploy once a specific branch with capistrano?
我们有一个非常简单的分支策略:
- 开发 -> 开发分支
- 暂存 -> 暂存服务器部署分支
- master -> 生产部门
我们的生产部署工作流程是开发 -> 暂存 -> 主控。我们总是先部署到暂存区,测试一段时间,然后再部署到生产环境。
现在我们正在开发一项我想测试的新功能。我不想把它放在试运行中,因为它是实验性的,我不想在功能完成之前锁定生产部署。
有没有办法告诉 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
我们有一个非常简单的分支策略:
- 开发 -> 开发分支
- 暂存 -> 暂存服务器部署分支
- master -> 生产部门
我们的生产部署工作流程是开发 -> 暂存 -> 主控。我们总是先部署到暂存区,测试一段时间,然后再部署到生产环境。
现在我们正在开发一项我想测试的新功能。我不想把它放在试运行中,因为它是实验性的,我不想在功能完成之前锁定生产部署。
有没有办法告诉 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