5

Is there a way to keep a log (either local or stored on a remote server) of every time a deployment is done via capistrano? It would be very useful to keep a record of what revision was running at any given time in the past.

I know that the deployment process leaves behind the deployed files for the last 10 deployments in the releases directory, but it would be nice to keep more history and have it accessible in the form of a flat file.

4

2 に答える 2

8

capistranoは、いくつかの有用な変数を設定します。そのうちの1つは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 に答える