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.
86 lines
2.0 KiB
Ruby
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
|