保留capistrano部署的日志

时间:2009-08-03 21:27:35

标签: ruby-on-rails capistrano

有没有办法在每次通过capistrano完成部署时保留日志(本地或存储在远程服务器上)?在过去的任何特定时间记录正在运行的修订版本将非常有用。

我知道部署过程会遗漏发布目录中最后10个部署的已部署文件,但是保留更多历史记录并以平面文件的形式访问它会很好。

2 个答案:

答案 0 :(得分:8)

capistrano设置了一些有用的变量,一个名为latest_revision的变量可以转储到文件中。

task :mark_revision do
  log = "#{deploy_to}/revisions.log"
  run "(test -e #{log} || touch #{log} && chmod 666 #{log}) && " +
  "echo #{latest_revision} >> #{log};"
end

答案 1 :(得分:3)

没有内置功能,所以另一个答案可以完美运行;我可能会说你应该以某种方式将它附加到默认执行链,我会建议像

这样的东西
after :deploy, :mark_revision

更好的仍然是imho会是这样的:

after :deploy do
    log = "#{deploy_to}/revisions.log"
    run "(test -e #{log} || touch #{log} && chmod 666 #{log}) && " +
    "echo #{latest_revision} >> #{log};"
end

我已经把它打开作为关于Capistrano的bug追踪器的讨论票,也许我们会在核心中实现一些东西以保持更好的日志;这肯定是一个我们严重忽视的一个很好的问题!

Peritor Labs的“Webistrano”做了类似的事情,通过保持数据库驱动的Web前端,这允许您记录您喜欢的任何内容,并将部署的依赖性从开发人员机器移到更中心的位置;通常人们在他们的CI服务器上使用Webistrano,或者如果他们是自托管的话,则使用存储库主机。有关其Trac的更多信息:http://labs.peritor.com/webistrano

错误存在于此处:https://capistrano.lighthouseapp.com/projects/8716-capistrano/tickets/98-log-deployments