In applicazioni complesse diventa difficile gestire il workflow di release di nuove versioni dell’applicativo ed essendo operazioni noiose, fatte di rado l’errore umano diventa elevato.
Prima di tutto è necessario installare Capistrano, in più un componente essenziale per poter gestire più repository e deploy complessi è caphub.
Una volta installato, create un nuovo progetto
caphub nuova-directory-capistrano
Dopodichè dovete procedere a creare una struttura simile a questa, creando tante cartelle quanti sono i progetti che volete deployare.
[mysite–deploy]$ tree —dirsfirst.├── config│ ├── deploy│ │ ├── billing│ │ │ ├── production.rb│ │ │ └── staging.rb│ │ ├── core│ │ │ ├── production.rb│ │ │ └── staging.rb│ │ └── customer│ │ ├── production.rb│ │ └── staging.rb│ ├── keys│ └── deploy.rb├── recipes├── Capfile└── Gemfile
#
# Put here shared configuration shared among all children
#
# Read more about configurations:
# https://github.com/railsware/capistrano-multiconfig/blob/master/README.md
ask :branch, ‘master’
set :application, proc { fetch(:stage).split(‘:’).reverse[1] }
set :repo_url, proc { “git@bitbucket.org/my-company/#{fetch(:application)}.git” }
set :deploy_to, proc { “/var/www/#{fetch(:application_dir)}” }
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 :application, ‘my-repository’
set :application_dir, ‘my-repository-dir’server ‘192.168.10.137’, user: ‘capistranodeploy’, port: 22, password: ‘capistranodeploy’, roles: %w{core}
cap <nome app>:<production/staging> deployesempio:cap core:production deploy