Skip to content

Instantly share code, notes, and snippets.

@s7anley
Created October 28, 2014 10:26
Show Gist options
  • Save s7anley/4b01ced689022d91332f to your computer and use it in GitHub Desktop.
Save s7anley/4b01ced689022d91332f to your computer and use it in GitHub Desktop.
Easy local deployment of PHP applications with Capistrano 2
require 'railsless-deploy'
load 'path/to/script/deploy'
set :application, "application-name"
set :keep_releases, 3
set :user, "root"
set :use_sudo, true
set :repository, "file:////path/to/project"
set :deploy_to, "/var/www/#{application}"
set :deploy_via, "copy"
set :scm, :git
set :copy_cache, true
role :web, "127.0.0.1" # IP address of server
after "deploy:finalize_update", "assets:build", "vendors:install"
before "npm:install", "npm:copy_previous"
before "assets:build", "npm:install"
before "vendors:install", "composer:install", "vendors:copy_previous"
# Clean old releases after successful deploy
after "deploy", "deploy:cleanup"
namespace :npm do
task :copy_previous, :except => { :no_release => true } do
run "if [ -d #{previous_release}/node_modules ]; then cp -a #{previous_release}/node_modules #{latest_release}/node_modules; fi"
end
task :install, :except => { :no_release => true } do
run "cd #{latest_release} && npm install --loglevel warn"
end
end
namespace :assets do
task :build, :except => { :no_release => true } do
run "cd #{latest_release} && bower --no-color install --production --config.interactive=false --allow-root"
run "cd #{latest_release} && grunt build"
end
end
namespace :vendors do
task :install do
run "sh -c 'cd #{latest_release} && php composer.phar install --no-dev --verbose --prefer-dist --optimize-autoloader --no-progress'"
end
task :copy_previous, :except => { :no_release => true } do
run "if [ -d #{previous_release}/vendor ]; then cp -a #{previous_release}/vendor #{latest_release}/vendor; fi"
end
end
namespace :composer do
task :install do
if 'true' != capture("if [ -e #{latest_release}/composer.phar ]; then echo 'true'; fi").strip
run "sh -c 'cd #{latest_release} && curl -s http://getcomposer.org/installer | php'"
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment