Untitled
unknown
plain_text
3 years ago
4.7 kB
8
Indexable
# config valid for current version and patch releases of Capistrano
lock "~> 3.17.1"
set :application, 'tcm'
set :use_sudo, false
set :ssh_options, { forward_agent: true, port: 9999 }
set :repo_url, 'git@github.com:Gera-IT/tcm.git' # Edit this to match your repository
set :branch, ENV['BRANCH'] || ENV['branch'] || 'master'
set :format, :pretty
set :log_level, :debug
set :stages, %w(staging production)
set :user, 'deploy'
set :pty, true
set :linked_files, %w{config/database.yml config/puma.rb config/sidekiq.yml public/sitemap.xml public/robots.txt .env config/master.key}
set :linked_dirs, %w{log tmp/pids tmp/cache tmp/sockets public/system public/uploads .bundle node_modules}
set :keep_releases, 5
# set :rvm_type, :system
set :rvm_custom_path, '/usr/share/rvm'
set :rvm_ruby_version, '3.1.2' # Edit this to match ruby version you use
set :puma_systemctl_user, :system
set :puma_rackup, -> { File.join(current_path, 'config.ru') }
set :puma_state, -> { "#{shared_path}/tmp/pids/puma.state" }
set :puma_pid, -> { "#{shared_path}/tmp/pids/puma.pid" }
set :puma_bind, -> {"unix://#{shared_path}/tmp/sockets/puma.sock"} #accept array for multi-bind
# set :puma_conf, "#{shared_path}/puma.rb"
set :puma_access_log, -> { "#{shared_path}/log/puma_access.log" }
set :puma_error_log, -> { "#{shared_path}/log/puma_error.log" }
set :puma_role, :app
set :puma_env, fetch(:rack_env, fetch(:rails_env, 'production'))
set :puma_threads, [0, 8]
set :puma_workers, 0
set :puma_worker_timeout, nil
set :puma_init_active_record, true
set :puma_preload_app, false
set :nginx_sites_available_path, "/etc/nginx/sites-available"
set :nginx_sites_enabled_path, "/etc/nginx/sites-enabled"
set :sidekiq_config, -> { File.join(shared_path, 'config', 'sidekiq.yml') }
set :sidekiq_service_unit_user, :system
set :whenever_identifier, -> { "#{fetch(:application)}_#{fetch(:stage)}" }
set :newrelic_env, fetch(:stage, fetch(:rack_env, fetch(:rails_env, 'production')))
set :slackistrano, {
klass: Slackistrano::CustomMessaging,
via_slackbot: false,
channel: '#tcl_deploy',
webhook: "https://hooks.slack.com/services/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",
branch_url: "https://github.com/Gera-IT/tcm/tree/#{fetch :branch}",
icon_url: -> { 'http://gravatar.com/avatar/885e1c523b7975c4003de162d8ee8fee?r=g&s=40' },
}
namespace :puma do
desc 'Create Directories for Puma Pids and Socket'
task :make_dirs do
on roles(:app) do
execute "mkdir #{shared_path}/tmp/sockets -p"
execute "mkdir #{shared_path}/tmp/pids -p"
end
end
before :start, :make_dirs
end
namespace :deploy do
desc "Make sure local git is in sync with remote."
task :check_revision do
on roles(:app) do
unless `git rev-parse HEAD` == `git rev-parse origin/master`
puts "WARNING: HEAD is not the same as origin/master"
puts "Run `git push` to sync changes."
exit
end
end
end
desc 'Initial Deploy'
task :initial do
on roles(:app) do
before 'deploy:restart', 'puma:start'
invoke 'deploy'
end
end
desc 'Restart application'
task :restart do
on roles(:app), in: :sequence, wait: 5 do
invoke 'puma:restart'
end
end
desc "Restart Nginx"
task :nginx_restart do
on roles(:app) do
execute "sudo service nginx restart"
end
end
task :invoke do
fail 'no task provided' unless ENV['task']
on roles(:app) do
within release_path do
with rails_env: fetch(:rails_env) do
execute :rake, ENV['task']
end
end
end
end
namespace :check do
before :linked_files, :set_master_key do
on roles(:app), in: :sequence, wait: 10 do
unless test("[ -f #{shared_path}/config/master.key ]")
upload! 'config/master.key', "#{shared_path}/config/master.key"
end
end
end
end
desc 'Minify CSS'
task :minify_css do
on roles(:app) do
within release_path do
with rails_env: fetch(:rails_env) do
execute :yarn, 'minify:css'
end
end
end
end
after :starting, :nginx_restart
after :finishing, :compile_assets
after :finishing, :cleanup
after :finishing, :restart
after 'deploy:assets:precompile', 'deploy:minify_css'
end
# # cap #{ENV} deploy:invoke task=sitemap:refresh
def compile_and_upload_template(from, to, as_root = false)
template_path = File.expand_path("../templates/#{from}", __FILE__)
template = ERB.new(File.new(template_path).read).result(binding)
upload! StringIO.new(template), to
sudo "chmod 644 #{to}" # ensure default file chmod
sudo "chown root:root #{to}" if as_root == true
end
Editor is loading...