如何将已部署的git修订版写入Capistrano中的文件

时间:2012-09-07 19:57:47

标签: git capistrano

我使用Capistrano来部署我的rails应用程序。如何写出部署到public_html / revision.txt的git修订版?

4 个答案:

答案 0 :(得分:4)

如果其他人必须这样做:

namespace :deploy do
  # ...

  desc "Write the current version to public_html/revision.txt"
  task :write_revision, :except => { :no_release => true } do
    run "cd #{latest_release}; git rev-parse HEAD > #{latest_release}/public/revision.txt"
  end

  # ...
end

after "deploy:update_code", "deploy:write_revision"

答案 1 :(得分:2)

我将此添加到我的deploy.rb:

execute "git rev-parse --abbrev-ref HEAD > public/revision.txt"
execute `"git log --oneline -1 >> public/revision.txt"`

然后在我的内部管理页面中,我有:

File.read("#{Rails.root}/public/revision.txt")

如果需要,您可以放入Rails.root而不是public。

答案 2 :(得分:1)

这可能是自问题原始问题以来添加的新功能,但Capistrano已在应用根目录中创建了REVISION文件。你可以复制一遍。这就是我所拥有的:

  desc "Write the current version to public/revision.txt"
  task :write_revision do
    on roles(:app, :api) do
      execute :cp, "#{fetch(:release_path)}/REVISION #{fetch(:release_path)}/public/revision.txt"
    end
  end
  after "deploy:finished", "deploy:write_revision"

答案 3 :(得分:0)

您可以使用log命令获取最新的提交ID,然后将其重定向到您的文件:

git --no-pager log -1 --pretty=format:%H > public_html/revision.txt