有没有办法在每次通过 capistrano 完成部署时保留日志(本地或存储在远程服务器上)?记录过去任何给定时间正在运行的修订是非常有用的。
我知道部署过程会在发布目录中留下最后 10 个部署的部署文件,但最好保留更多历史记录并以平面文件的形式访问它。
有没有办法在每次通过 capistrano 完成部署时保留日志(本地或存储在远程服务器上)?记录过去任何给定时间正在运行的修订是非常有用的。
我知道部署过程会在发布目录中留下最后 10 个部署的部署文件,但最好保留更多历史记录并以平面文件的形式访问它。
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
没有内置功能,因此其他答案可以完美运行;我可能会说你应该以某种方式将它附加到默认执行链,我会推荐类似的东西
after :deploy, :mark_revision
更好的恕我直言会是这样的:
after :deploy do
log = "#{deploy_to}/revisions.log"
run "(test -e #{log} || touch #{log} && chmod 666 #{log}) && " +
"echo #{latest_revision} >> #{log};"
end
我已经打开它作为讨论 Capistrano 的错误跟踪器的票,也许我们会在核心中实现一些东西以保持更好的日志;这当然是一个我们严重忽视的好问题!
Peritor Labs 的“Webistrano”做了类似的事情,通过保留一个数据库驱动的 Web 前端,这允许您记录您喜欢的任何内容,并将部署依赖项从开发人员机器转移到更中心的地方;人们通常在他们的 CI 服务器或存储库主机上使用 Webistrano(如果他们是自托管的)。有关他们 Trac 的更多信息:http: //labs.peritor.com/webistrano
该错误位于此处:https ://capistrano.lighthouseapp.com/projects/8716-capistrano/tickets/98-log-deployments