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