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