Capistrano - 查找当前部署的版本

Capistrano - find current deployed version

使用Capistrano 3.4,是否有命令可以找到当前部署的版本(分支和tag/revision)?

在部署的根目录中有一个文件revisions.log。我可以创建一个自定义命令来解析它,但特别是在回滚的情况下,解析起来不是很容易:

Branch master (at 21) deployed as release 20151207160059 by Marco Branch master (at 22) deployed as release 20151207180000 by Marco Marco rolled back to release 20151207160059

在发布文件夹中有一个名为 REVISION 的文件,其中包含已部署的 VCS 修订标识符。您只需 cat 即可获得修订版。

根据您最初的想法,获取当前修订版(通过 )并使用 revision.log 文件查找匹配的分支名称

revision_string = Rails.root.join('..', '..', 'revisions.log').readlines.detect { |rev| rev.includes?(revision_from_revision_file) }

"Branch production (at 6d68c9415e4d89a6c3119d68a164e50274a2e790) deployed as release 20190301085412 by Cyril"

然后

revision = revision_string.match(
  /^Branch (?<branch>.+) \(at (?<hash>\w+)\) deployed as release (?<release>\w+)/
)
revision['branch'] # => 'production'