Hatena::Groupcatalyst

dann@catalyst このページをアンテナに追加 RSSフィード

2008-01-31

CapistranoでDeploymentに不足しているもの

23:06 |  CapistranoでDeploymentに不足しているもの - dann@catalyst を含むブックマーク はてなブックマーク -  CapistranoでDeploymentに不足しているもの - dann@catalyst  CapistranoでDeploymentに不足しているもの - dann@catalyst のブックマークコメント

  • StagingサーバーへのDeploy
  • 環境に応じたアプリケーションサーバーなどの設定ファイルの自動生成とDeploy
  • リリースしたコードへのタギング

上記の機能を追加すれば、実際に使えるようになるんじゃないかと。

CapistranoでCatalystアプリをDeploy

22:36 |  CapistranoでCatalystアプリをDeploy - dann@catalyst を含むブックマーク はてなブックマーク -  CapistranoでCatalystアプリをDeploy - dann@catalyst  CapistranoでCatalystアプリをDeploy - dann@catalyst のブックマークコメント

config/deploy.rbに以下のものを記述。

set :application, "MyApp"
set :repository,  "file:///var/svn/repos/#{application}/trunk"

# If you aren't deploying to /u/apps/#{application} on the target
# servers (which is the default), you can specify the actual location
# via the :deploy_to variable:
set :deploy_to, "/var/www/#{application}"

role :app, "192.168.0.30"
role :web, "192.168.0.30"
role :db,  "192.168.0.30", :primary => true

namespace :deploy do
  task :finalize_update, :except => { :no_release => true } do
    stamp = Time.now.utc.strftime("%Y%m%d%H%M.%S")
    asset_paths = %w(images css js).map { |p|
      "#{latest_release}/root/static/#{p}"
    }.join(" ")
    run "find #{asset_paths} -exec touch -t #{stamp} {} ';'; true", :env => { "TZ" => "UTC" }
  end

  # TODO
  task :migrate, :roles => :db, :only => { :primary => true } do
  end

  task :start, :roles => :app do
    sudo "/etc/init.d/apache2 start"
  end

  task :stop, :roles => :app do
    sudo "/etc/init.d/apache2 stop"
  end


  task :restart do
    sudo "/etc/init.d/apache2 restart"
  end
end

Capfile

load 'deploy' if respond_to?(:namespace) # cap2 differentiator
Dir['vendor/plugins/*/recipes/*.rb'].each { |plugin| load(plugin) }
load 'config/deploy'

殆どの実装は、以下のファイルに入っているので、Railsに関連しないところだけをdeploy.rbで上書きすればよいだけ。

/var/lib/gems/1.8/gems/capistrano-2.1.0/lib/capistrano/recipes/deploy.rb

さほど変更いらなかったなぁ。

使い方

% cap deploy

TODO

  • Apacheの設定ファイルの自動生成
  • catastarterへの組み込み
トラックバック - http://catalyst.g.hatena.ne.jp/dann/20080131