如何使用capistrano deploy定位特定的提交SHA

Sco*_*ler 37 ruby deployment capistrano ruby-on-rails

我想知道如何使用Capistrano在Git中针对特定的提交SHA进行部署?应该是这样的

cap deploy --version=<sha targeted>
Run Code Online (Sandbox Code Playgroud)

经过大量的搜索,似乎无法找到答案.

mol*_*olf 63

对于Capistrano 2.9直到3.0:

cap -S revision=80655da8d80aaaf92ce5357e7828dc09adb00993 deploy
Run Code Online (Sandbox Code Playgroud)

对于较旧版本的Capistrano,您可以通过执行以下操作来部署特定的git commit/tree/branch/tag:

cap -s branch=80655da8d80aaaf92ce5357e7828dc09adb00993 deploy
Run Code Online (Sandbox Code Playgroud)

在某些情况下,可能还需要将环境指定为参数.production只是一个例子.

cap production -S revision=80655da8d80aaaf92ce5357e7828dc09adb00993 deploy
Run Code Online (Sandbox Code Playgroud)

  • 对于Capistrano 3,请看这个问题:http://stackoverflow.com/questions/21036175/how-to-deploy-a-specific-revision-with-capistrano-3 (4认同)

eah*_*son 17

molf的回答对我不起作用(使用capistrano 2.11.2).我不得不使用"修订版"代替分支,如下所示:

cap -S revision=80655da8d80aaaf92ce5357e7828dc09adb00993 deploy
Run Code Online (Sandbox Code Playgroud)

  • 那么,2.11.2高于2.9,你使用上面提到的语法2.9.我错过了什么吗? (3认同)

Ale*_*pov 12

卡皮斯特拉诺3

在您deploy.rb或特定于舞台的文件中config/deploy/production.rb

set :branch, ENV.fetch('REVISION', 'master')
Run Code Online (Sandbox Code Playgroud)

这允许您指向特定的git修订版.它接受SHA以及解析为真实修订版的任何内容(例如git标记,带注释的标记或分支).

通过设置REVISION环境变量在命令行上使用它,例如

bundle exec cap production deploy REVISION=80655da8d80aaaf92ce5357e7828dc09adb00993

bundle exec cap staging deploy REVISION=my-topic-branch
Run Code Online (Sandbox Code Playgroud)