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.
This commit is contained in:
Juan Salvador Pérez García
2018-06-08 11:51:44 +02:00
parent 77dd60427d
commit 1db5a00eae
10 changed files with 61 additions and 21 deletions

View File

@@ -1,19 +1,23 @@
# config valid only for current version of Capistrano
lock '~> 3.10.1'
def deploysecret(key)
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, 'undefined')
@deploy_secrets_yml.fetch(key.to_s, default)
end
set :rails_env, fetch(:stage)
set :rvm1_ruby_version, '2.3.2'
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, 'https://github.com/consul/consul.git'
set :repo_url, deploysecret(:repository, 'https://github.com/consul/consul.git')
set :revision, `git rev-parse --short #{fetch(:branch)}`.strip
@@ -40,10 +44,22 @@ set(:config_files, %w(
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
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
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'