Files
nairobi/config/deploy.rb
Juan Salvador Pérez García 1db5a00eae Prepare capistrano/db migrations to support more setups (#2)
The following parameters have been added to deploy-secrets.yml:

* **use_rvm**: yes/no
* **ruby_version**: Ruby version for rvm. Defaults to 2.3.2
* **repository**: Git repository. Defaults to the oficial repository
* **branch**: Branch to deploy. Defaults to master
* **rails_env**: Defaults to the stage.

Fixed migrations that required admin rights. Now first check if the postgress extensions are available. If so finish without doing nothin.

Added support for passenger.
2018-07-17 17:46:54 +02:00

86 lines
2.0 KiB
Ruby

# config valid only for current version of Capistrano
lock '~> 3.10.1'
def deploysecret(key, default = 'undefined')
@deploy_secrets_yml ||= YAML.load_file('config/deploy-secrets.yml')[fetch(:stage).to_s]
@deploy_secrets_yml.fetch(key.to_s, default)
end
set :rails_env, fetch(:stage)
if deploysecret(:use_rvm, true)
require 'rvm1/capistrano3'
set :rvm1_ruby_version, deploysecret(:ruby_version, '2.3.2')
end
set :application, 'consul'
set :full_app_name, deploysecret(:full_app_name)
set :server_name, deploysecret(:server_name)
set :repo_url, deploysecret(:repository, 'https://github.com/consul/consul.git')
set :revision, `git rev-parse --short #{fetch(:branch)}`.strip
set :log_level, :info
set :pty, true
set :use_sudo, false
set :linked_files, %w{config/database.yml config/secrets.yml}
set :linked_dirs, %w{log tmp public/system public/assets}
set :keep_releases, 5
set :local_user, ENV['USER']
set :delayed_job_workers, 2
set :delayed_job_roles, :background
set(:config_files, %w(
log_rotation
database.yml
secrets.yml
unicorn.rb
))
set :whenever_roles, -> { :app }
set :user, deploysecret(:user)
set :ssh_options, -> {
{
user: deploysecret(:user),
forward_agent: true,
compression: 'none',
port: deploysecret(:ssh_port)
}
}
namespace :deploy do
if deploysecret(:use_rvm, true)
before :starting, 'rvm1:install:rvm' # install/update RVM
before :starting, 'rvm1:install:ruby' # install Ruby and create gemset
before :starting, 'install_bundler_gem' # install bundler gem
end
after :publishing, 'deploy:restart'
after :published, 'delayed_job:restart'
after :published, 'refresh_sitemap'
after :finishing, 'deploy:cleanup'
end
task :install_bundler_gem do
on roles(:app) do
execute "rvm use #{fetch(:rvm1_ruby_version)}; gem install bundler"
end
end
task :refresh_sitemap do
on roles(:app) do
within release_path do
with rails_env: fetch(:rails_env) do
execute :rake, 'sitemap:refresh:no_ping'
end
end
end
end