Untitled
unknown
plain_text
2 years ago
4.7 kB
7
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...