From 124e43e1bd45cb4e6af364274eaa44a75fd99472 Mon Sep 17 00:00:00 2001 From: Neil Smith Date: Mon, 6 Jan 2014 20:45:09 +0000 Subject: [PATCH] Initial capification --- Capfile | 26 +++++++++++++++++++++++ config/deploy-sample.rb | 40 +++++++++++++++++++++++++++++++++++ config/deploy/production.rb | 42 +++++++++++++++++++++++++++++++++++++ config/deploy/staging.rb | 42 +++++++++++++++++++++++++++++++++++++ 4 files changed, 150 insertions(+) create mode 100644 Capfile create mode 100644 config/deploy-sample.rb create mode 100644 config/deploy/production.rb create mode 100644 config/deploy/staging.rb diff --git a/Capfile b/Capfile new file mode 100644 index 0000000..331c5a3 --- /dev/null +++ b/Capfile @@ -0,0 +1,26 @@ +# Load DSL and Setup Up Stages +require 'capistrano/setup' + +# Includes default deployment tasks +require 'capistrano/deploy' + +# Includes tasks from other gems included in your Gemfile +# +# For documentation on these, see for example: +# +# https://github.com/capistrano/rvm +# https://github.com/capistrano/rbenv +# https://github.com/capistrano/chruby +# https://github.com/capistrano/bundler +# https://github.com/capistrano/rails/tree/master/assets +# https://github.com/capistrano/rails/tree/master/migrations +# +# require 'capistrano/rvm' +# require 'capistrano/rbenv' +# require 'capistrano/chruby' +# require 'capistrano/bundler' +# require 'capistrano/rails/assets' +# require 'capistrano/rails/migrations' + +# Loads custom tasks from `lib/capistrano/tasks' if you have any defined. +Dir.glob('lib/capistrano/tasks/*.cap').each { |r| import r } diff --git a/config/deploy-sample.rb b/config/deploy-sample.rb new file mode 100644 index 0000000..a1b6fd1 --- /dev/null +++ b/config/deploy-sample.rb @@ -0,0 +1,40 @@ +set :application, 'my_app_name' +set :repo_url, 'git@example.com:me/my_repo.git' + +# ask :branch, proc { `git rev-parse --abbrev-ref HEAD`.chomp } + +# set :deploy_to, '/var/www/my_app' +# set :scm, :git + +# set :format, :pretty +# set :log_level, :debug +# set :pty, true + +# set :linked_files, %w{config/database.yml} +# set :linked_dirs, %w{bin log tmp/pids tmp/cache tmp/sockets vendor/bundle public/system} + +# set :default_env, { path: "/opt/ruby/bin:$PATH" } +# set :keep_releases, 5 + +namespace :deploy do + + desc 'Restart application' + task :restart do + on roles(:app), in: :sequence, wait: 5 do + # Your restart mechanism here, for example: + # execute :touch, release_path.join('tmp/restart.txt') + end + end + + after :restart, :clear_cache do + on roles(:web), in: :groups, limit: 3, wait: 10 do + # Here we can do anything such as: + # within release_path do + # execute :rake, 'cache:clear' + # end + end + end + + after :finishing, 'deploy:cleanup' + +end diff --git a/config/deploy/production.rb b/config/deploy/production.rb new file mode 100644 index 0000000..9632098 --- /dev/null +++ b/config/deploy/production.rb @@ -0,0 +1,42 @@ +set :stage, :production + +# Simple Role Syntax +# ================== +# Supports bulk-adding hosts to roles, the primary +# server in each group is considered to be the first +# unless any hosts have the primary property set. +role :app, %w{deploy@example.com} +role :web, %w{deploy@example.com} +role :db, %w{deploy@example.com} + +# Extended Server Syntax +# ====================== +# This can be used to drop a more detailed server +# definition into the server list. The second argument +# something that quacks like a hash can be used to set +# extended properties on the server. +server 'example.com', user: 'deploy', roles: %w{web app}, my_property: :my_value + +# you can set custom ssh options +# it's possible to pass any option but you need to keep in mind that net/ssh understand limited list of options +# you can see them in [net/ssh documentation](http://net-ssh.github.io/net-ssh/classes/Net/SSH.html#method-c-start) +# set it globally +# set :ssh_options, { +# keys: %w(/home/rlisowski/.ssh/id_rsa), +# forward_agent: false, +# auth_methods: %w(password) +# } +# and/or per server +# server 'example.com', +# user: 'user_name', +# roles: %w{web app}, +# ssh_options: { +# user: 'user_name', # overrides user setting above +# keys: %w(/home/user_name/.ssh/id_rsa), +# forward_agent: false, +# auth_methods: %w(publickey password) +# # password: 'please use keys' +# } +# setting per server overrides global ssh_options + +# fetch(:default_env).merge!(rails_env: :production) diff --git a/config/deploy/staging.rb b/config/deploy/staging.rb new file mode 100644 index 0000000..a3e50ce --- /dev/null +++ b/config/deploy/staging.rb @@ -0,0 +1,42 @@ +set :stage, :staging + +# Simple Role Syntax +# ================== +# Supports bulk-adding hosts to roles, the primary +# server in each group is considered to be the first +# unless any hosts have the primary property set. +role :app, %w{deploy@example.com} +role :web, %w{deploy@example.com} +role :db, %w{deploy@example.com} + +# Extended Server Syntax +# ====================== +# This can be used to drop a more detailed server +# definition into the server list. The second argument +# something that quacks like a hash can be used to set +# extended properties on the server. +server 'example.com', user: 'deploy', roles: %w{web app}, my_property: :my_value + +# you can set custom ssh options +# it's possible to pass any option but you need to keep in mind that net/ssh understand limited list of options +# you can see them in [net/ssh documentation](http://net-ssh.github.io/net-ssh/classes/Net/SSH.html#method-c-start) +# set it globally +# set :ssh_options, { +# keys: %w(/home/rlisowski/.ssh/id_rsa), +# forward_agent: false, +# auth_methods: %w(password) +# } +# and/or per server +# server 'example.com', +# user: 'user_name', +# roles: %w{web app}, +# ssh_options: { +# user: 'user_name', # overrides user setting above +# keys: %w(/home/user_name/.ssh/id_rsa), +# forward_agent: false, +# auth_methods: %w(publickey password) +# # password: 'please use keys' +# } +# setting per server overrides global ssh_options + +# fetch(:default_env).merge!(rails_env: :staging) -- 2.34.1