Skip to content

Instantly share code, notes, and snippets.

@stevelacey
Last active December 20, 2015 23:08
Show Gist options
  • Save stevelacey/6209695 to your computer and use it in GitHub Desktop.
Save stevelacey/6209695 to your computer and use it in GitHub Desktop.
WordPress Capistrano deploy.rb
# Project
set :application, "ProjectName"
set :repository, "git@github.com:changeme/#{application}.git"
set :db_dev, "database_name_dev"
# Tasks
## Standard
namespace :compass do
desc "Compile Sass"
task :compile do
run "cd #{latest_release} && compass compile -qs compressed"
end
end
namespace :db do
desc "Push database"
task :push do
run_locally "mysqldump -u root #{db_dev} | pv | ssh -C #{user}@#{domain} mysql -u #{db_user} -p#{db_password} #{db_name}"
end
desc "Pull database"
task :pull do
run_locally "ssh -C #{user}@#{domain} mysqldump -u #{db_user} -p#{db_password} --single-transaction #{db_name} | pv | mysql -u root #{db_dev}"
end
end
### Hooks
after "deploy:finalize_update", "compass:compile"
## WordPress
namespace :wordpress do
desc "Symlink shared uploads directory."
task :create_symlink do
run "rm -rf #{release_path}/web/content/uploads && ln -nfs #{shared_path}/uploads #{release_path}/web/content/uploads"
end
end
namespace :uploads do
desc "Pushes uploaded files."
task :push do
run_locally("rsync -avz web/content/uploads/ #{user}@#{domain}:#{shared_path}/uploads/")
end
desc "Pulls uploaded files."
task :pull do
run_locally("rsync -avz #{user}@#{domain}:#{shared_path}/uploads/ web/content/uploads/")
end
desc "Flushes locally uploaded files."
task :flush do
run_locally("rm -rf web/content/uploads/*")
end
end
### Hooks
after "deploy:create_symlink", "wordpress:create_symlink"
# Multi-Stage
set :scm, :git
set :git_enable_submodules, 1
set :stages, %w(production stage)
set :default_stage, "stage"
require "capistrano/ext/multistage"
# Server
set :user, "changeme"
set :group, "www-data"
set :use_sudo, false
# Releases
set :keep_releases, 5
after "deploy:update", "deploy:cleanup"
# Remote Cache
set :deploy_via, :remote_cache
set :repository_cache, "cache"
set :domain, "project-name.co.uk"
set :branch, "master"
set :deploy_to, "/var/www/#{domain}"
set :db_name, "project_name_live"
set :db_user, "project_name_live"
set :db_password, "live_password_not_root"
role :web, domain # Your HTTP server, Apache/etc
role :app, domain # This may be the same as your `Web` server
role :db, domain, :primary => true
set :domain, "stage.project-name.co.uk"
set :branch, $1 if `git branch` =~ /\* (\S+)\s/m
set :deploy_to, "/var/www/#{domain}"
set :db_name, "project_name_demo"
set :db_user, "project_name_demo"
set :db_password, "demo_password_not_root!"
role :web, domain # Your HTTP server, Apache/etc
role :app, domain # This may be the same as your `Web` server
role :db, domain, :primary => true
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment