有没有办法在每次通过capistrano完成部署时保留日志(本地或存储在远程服务器上)?在过去的任何特定时间记录正在运行的修订版本将非常有用。
我知道部署过程会遗漏发布目录中最后10个部署的已部署文件,但是保留更多历史记录并以平面文件的形式访问它会很好。
答案 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