5

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

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

4

2 回答 2

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
于 2009-08-03T22:03:03.230 回答
3

没有内置功能,因此其他答案可以完美运行;我可能会说你应该以某种方式将它附加到默认执行链,我会推荐类似的东西

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

于 2009-08-04T14:49:43.237 回答