【发布时间】:2009-08-03 21:27:34
【问题描述】:
有没有办法记录每次通过 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
【讨论】: