recipes/alpha_omega/deploy.rb in alpha_omega-0.0.28 vs recipes/alpha_omega/deploy.rb in alpha_omega-0.0.29

- old
+ new

@@ -37,10 +37,12 @@ _cset(:revision) { source.head } _cset :root_user, "root" _cset :root_group, "root" + _cset :dir_perms, "0775" + # ========================================================================= # These variables should NOT be changed unless you are very confident in # what you are doing. Make sure you understand all the implications of your # changes if you do decide to muck with these! # ========================================================================= @@ -48,11 +50,11 @@ _cset(:source) { Capistrano::Deploy::SCM.new(scm, self) } _cset(:real_revision) { source.local.query_revision(revision) { |cmd| with_env("LC_ALL", "C") { run_locally(cmd) } } } _cset(:strategy) { Capistrano::Deploy::Strategy.new(deploy_via, self) } - _cset :version_dir, "releases" + _cset(:version_dir) { releases.length > 0 ? "releases" : "" } _cset :current_dir, "current" _cset :service_dir, "service" _cset :releases, %w(alpha omega) _cset(:releases_path) { File.join(deploy_to, version_dir) } @@ -60,17 +62,25 @@ _cset(:service_path) { File.join(deploy_to, service_dir) } _cset(:release_path) { File.join(releases_path, release_name) } _cset(:current_release) { release_path } _cset(:current_workarea) { capture("readlink #{current_path} || true").strip.split("/")[-1] } - _cset(:previous_release) { w = current_workarea - releases.index(w) && releases[(releases.index(w)-1)%releases.length] || nil + _cset(:previous_release) { if releases.length > 0 + w = current_workarea + releases.index(w) && releases[(releases.index(w)-1)%releases.length] || nil + else + "" + end } - _cset(:release_name) { w = current_workarea - stage = releases[((releases.index(w)?releases.index(w):-1)+1)%releases.length] - system "figlet -w 200 on #{stage}" - stage + _cset(:release_name) { if releases.length > 0 + w = current_workarea + stage = releases[((releases.index(w)?releases.index(w):-1)+1)%releases.length] + system "figlet -w 200 on #{stage}" + stage + else + "" + end } _cset(:current_revision) { capture("cat #{current_path}/REVISION", :except => { :no_release => true }).chomp } _cset(:latest_revision) { capture("cat #{current_release}/REVISION", :except => { :no_release => true }).chomp } _cset(:previous_revision) { capture("cat #{previous_release}/REVISION", :except => { :no_release => true }).chomp if previous_release } @@ -201,18 +211,18 @@ symlink end end task :bootstrap_code, :except => { :no_release => true } do - if releases.length == 1 # without services and run as root - run "[[ -d #{deploy_to} ]] || #{try_sudo} install -v -d -m 0775 #{try_sudo.empty? ? '' : "-o #{root_user} -g #{root_group}"} #{deploy_to}" - run "#{try_sudo} install -v -d -m 0775 #{try_sudo.empty? ? '' : "-o #{user} -g #{group}"} #{releases_path} #{deploy_to}/log" + if releases.length < 2 # without services and run as root + run "[[ -d #{deploy_to} ]] || #{try_sudo} install -v -d -m #{dir_perms} #{try_sudo.empty? ? '' : "-o #{root_user} -g #{root_group}"} #{deploy_to}" + run "#{try_sudo} install -v -d -m #{dir_perms} #{try_sudo.empty? ? '' : "-o #{user} -g #{group}"} #{releases_path} #{deploy_to}/log" else dirs = [ releases_path, service_path, "#{deploy_to}/log" ] dir_args = dirs.map {|d| d.sub("#{deploy_to}/", "") }.join(' ') - run "#{try_sudo} install -v -d -m 0775 #{try_sudo.empty? ? '' : "-o #{user} -g #{group}"} #{deploy_to}" - run "cd #{deploy_to} && install -v -d -m 0775 #{dir_args}" + run "#{try_sudo} install -v -d -m #{dir_perms} #{try_sudo.empty? ? '' : "-o #{user} -g #{group}"} #{deploy_to}" + run "cd #{deploy_to} && install -v -d -m #{dir_perms} #{dir_args}" end end desc <<-DESC Copies your project to the remote servers. This is the first stage \ @@ -242,11 +252,11 @@ else logger.important "no previous release to rollback to, rollback of symlink skipped" end end - if releases.length == 1 + if releases.length < 2 run "[[ $(readlink #{current_path} 2>&-) = #{latest_release} ]] || #{try_sudo} ln -vsnf #{latest_release} #{current_path}" else run "ln -vsnf #{latest_release} #{current_path}" end @@ -465,23 +475,23 @@ run "rm -f #{deploy_to}/log/.#{application}_deploy_lock" end end # :deploy - on :exit do - put full_log, "#{deploy_to}/log/#{application}_last_deploy_#{release_name}_#{branch}.log-#{Time.now.strftime('%Y%m%d-%H%M')}" - end - namespace :ruby do task :bundle do run_script = <<-SCRIPT set -e; cd #{release_path}; [[ -f #{ruby_env} ]] && . #{ruby_env}; [[ -f #{ruby_rvm} ]] && { set +e; source #{ruby_rvm}; set -e; }; bundle check 2>&1 > /dev/null || { bundle install --deployment --quiet --local --without development test && bundle check; }; SCRIPT run run_script.gsub(/[\n\r]+[ \t]+/, " ") end + end + + on :exit do + put full_log, "#{deploy_to}/log/#{application}_last_deploy.log-#{Time.now.strftime('%Y%m%d-%H%M')}" end end # Capistrano::Configuration