namespace :deploy do desc "Start a deployment, make sure server(s) ready." task :starting do end desc "Started" task :started do end desc "Update server(s) by setting up a new release." task :updating do end desc "Updated" task :updated do end desc "Revert server(s) to previous release." task :reverting do end desc "Reverted" task :reverted do end desc "Publish the release." task :publishing do end desc "Published" task :published do end desc "Finish the deployment, clean up server(s)." task :finishing do end desc "Finish the rollback, clean up server(s)." task :finishing_rollback do end desc "Finished" task :finished do end desc "Rollback to previous release." task :rollback do %w{ starting started reverting reverted publishing published finishing_rollback finished }.each do |task| invoke "deploy:#{task}" end end end desc "Deploy a new release." task :deploy do set(:deploying, true) %w{ starting started updating updated publishing published finishing finished }.each do |task| invoke "deploy:#{task}" end end task default: :deploy