Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何使用capistrano deploy针对特定的提交SHA_Ruby On Rails_Ruby_Deployment_Capistrano - Fatal编程技术网

Ruby on rails 如何使用capistrano deploy针对特定的提交SHA

Ruby on rails 如何使用capistrano deploy针对特定的提交SHA,ruby-on-rails,ruby,deployment,capistrano,Ruby On Rails,Ruby,Deployment,Capistrano,我想知道如何使用Capistrano在Git中针对特定的commit SHA进行部署?应该是这样的 cap deploy --version=<sha targeted> cap部署--version= 经过大量搜索后,似乎无法找到此问题的答案。对于Capistrano 2.9,直到3.0: cap -S revision=80655da8d80aaaf92ce5357e7828dc09adb00993 deploy 对于较旧版本的Capistrano,您可以通过以下操作部署特

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

cap deploy --version=<sha targeted>
cap部署--version=

经过大量搜索后,似乎无法找到此问题的答案。

对于Capistrano 2.9,直到3.0:

cap -S revision=80655da8d80aaaf92ce5357e7828dc09adb00993 deploy
对于较旧版本的Capistrano,您可以通过以下操作部署特定的git提交/树/分支/标记:

cap -s branch=80655da8d80aaaf92ce5357e7828dc09adb00993 deploy
在某些情况下,可能还需要将环境指定为参数<代码>生产只是一个例子

cap production -S revision=80655da8d80aaaf92ce5357e7828dc09adb00993 deploy

molf的回答对我不起作用(使用capistrano 2.11.2)。我不得不使用“修订版”而不是分支,如下所示:

cap -S revision=80655da8d80aaaf92ce5357e7828dc09adb00993 deploy

Capistrano 3

在您的
deploy.rb
或特定于阶段的文件中,如
config/deploy/production.rb

set :branch, ENV.fetch('REVISION', 'master')
这允许您指向特定的git版本。它接受SHA,但也接受解析为实际修订的任何内容(例如git标记、带注释的标记或分支)

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

bundle exec cap production deploy REVISION=80655da8d80aaaf92ce5357e7828dc09adb00993

bundle exec cap staging deploy REVISION=my-topic-branch
问:分支机构,“主”


提示输入,但如果按return,则默认为“master”。

这是特定提交的SHA吗?该分支将通过“git checkout”传递给git,因此提交id应与树id、分支名称等一样有效。此答案对我不适用,请参阅下面的@eahanson答案。对于Capistrano 3,请看这个问题:
set:branch,'SHA'
在Capistrano 2和3中统一工作,在2.14.2中工作100%良好,2.11.2高于2.9,您使用上述2.9中提到的语法。我遗漏了什么吗?@kik molf在我的评论后更改了答案有没有办法将分支作为命令行参数传递?我不知道怎么做。@Marcovtwow没有可能,请查看更新后的答案。