Your SlideShare is downloading. ×
Capistrano 3 Deployment
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

Capistrano 3 Deployment

162
views

Published on

Capistrano 3 has been rebuilt from the ground up. Learn how to transition from using Capistrano version 2 to Capistrano version 3.

Capistrano 3 has been rebuilt from the ground up. Learn how to transition from using Capistrano version 2 to Capistrano version 3.

Published in: Software

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
162
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
9
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Capistrano 3 Deployment Creston Jamison RubyTree Software, Inc.
  • 2. What is Capistrano?  A remote server automation and deployment tool.  Version 2 is mostly Rails specific and used a custom DSL.  Version 3 is re-written from the ground up and is trying to be more agnostic.  Version 3 uses Rake with methods included to easily run tasks “on” servers.
  • 3. Breaking It Up  capistrano  capistrano-rails  capistrano-bundler  capistrano-rbenv / rvm / chruby
  • 4. Nice  In general, less configuration to deploy rails.  Multi-Stage by default  Easily sym link files and folders (e.g., config/database.yml, log)  Rails: database migrations automatically run during deploy  Deployments have more granularity for defining when tasks occur  Easily setup parallelism for tasks.
  • 5. Where does my config go???  Version 2  Gemfile -> only capistrano  Capfile -> no changes  config/deploy.rb -> all configuration  Version 3  Gemfile -> capistrano + others  Capfile -> require dependencies  config/deploy.rb -> shared configuration (set)  config/deploy/[env].rb -> server role configuration  lib/capistrano/tasks -> Rake files for tasks
  • 6. Gemfile group :development do gem 'capistrano-rails', '~> 1.1' end
  • 7. Run bundle bundle exec cap install  Setup public key authentication to log in as deploy_user.
  • 8. Cap file require 'capistrano/deploy' require 'capistrano/rails' # require 'capistrano/rvm' # require 'capistrano/rbenv' # require 'capistrano/chruby' # require 'capistrano/bundler' # require 'capistrano/rails/assets' # require 'capistrano/rails/migrations'
  • 9. config/deploy.rb set :application, 'test_deploy' set :repo_url, 'git@github.com:username/test_deploy.git' set :deploy_to, '/my/server/directory/test_deploy'
  • 10. config/deploy.rb, part 2 set :user, 'deploy_username' set :linked_files, %w{config/database.yml} set :linked_dirs, %w{bin log tmp/pids tmp/cache tmp/sockets vendor/bundle}
  • 11. config/deploy.rb, part 3 namespace :deploy do desc 'Restart application' task :restart do on roles(:app), in: :sequence, wait: 5 do # execute :touch, release_path.join('tmp/restart.txt') end end after :publishing, :restart end
  • 12. config/deploy/production.rb role :app, %w{deploy_user@ip_address:port} role :web, %w{deploy_user@ip_address:port} role :db, %w{deploy_user@ip_address:port} OR server ‘ip_address', user: ‘deploy_user', roles: %w{web app db}, ssh_options: { port: port }
  • 13. Task Example desc 'Create a new sitemap' task :create_sitemap do on roles(:app) do within release_path do with rails_env: fetch(:stage) do execute :rake, ‘sitemap:create’ end end end end after :finished, :create_sitemap
  • 14. Deploying  Ensure your web (apache, nginx) and app (unicorn, puma, passenger) are configured.  bundle exec cap production git:check  bundle exec cap production deploy:check  Create ~/shared/config/database.yml  bundle exec cap production deploy
  • 15. Gotchas  Shared directory structure on the server has changed from version 2.  Shared [linked files / folders] Assets Bundle  Migrations happen automatically  Deployment flow terminology has changed
  • 16. References http://capistranorb.com/ https://github.com/capistrano https://github.com/capistrano/capistrano https://github.com/capistrano/rails
  • 17. Questions? Creston Jamison @crestonjamison creston.jamison@rubytreesoftware.com