Files
socialhose-php/app/config/deploy.rb
T
2022-12-09 08:36:26 -06:00

127 lines
4.1 KiB
Ruby

# Stages
set :stages, %w(production demo development staging)
set :default_stage, "development"
set :stage_dir, "app/config/stage"
set :keep_releases, 3
# Capifony settings
require 'capistrano/ext/multistage'
require 'fileutils'
require 'zlib'
# Application
set :application, "socialhose" #application name
set :app_path, "app"
set :web_path, "web"
set :model_manager, "doctrine"
set :deploy_dir, "deploy"
set :log_path, "var/logs"
set :cache_path, "var/cache"
set :session_path, "var/sessions"
set :node_modules_path, "frontend/node_modules"
# Version control
# pass branch as parameter: example: cap development deploy -S branch=origin/development
set :scm, :git
set :repository, "git@github.com:melzubeir/socialhose.git" #application repository URL
set :git_shallow_clone, 1
set :branch, fetch(:branch, '').sub!(/^.*\//, "")
# Directories
set :writable_dirs, [log_path, cache_path, session_path]
set :shared_files, ["app/config/parameters.yml"]
set :shared_children, [log_path, node_modules_path]
# Permissions
set :permission_method, :acl
set :use_set_permissions, true
set :use_sudo, false
set :webserver_user, "apache"
ssh_options[:forward_agent] = true
# Symfony
set :use_composer, true
set :composer_options, "--verbose --prefer-dist --optimize-autoloader --no-progress --no-interaction"
set :update_vendors, false
set :copy_vendors, true
set :dump_assetic_assets, true
set :interactive_mode, false
set :update_cmd, "./update.sh" # will run after deploy
set :clear_controllers, false
set :symfony_env, "dev"
set :symfony_console, "bin/console"
# Custom tasks
namespace :deployment do
desc "Update site config"
task :update_site_config do
capifony_pretty_print "--> Update site config"
run "#{try_sudo} sh -c 'cd #{latest_release} && #{php_bin} #{symfony_console} socialhose:site-settings:sync #{console_options}'"
capifony_puts_ok
end
namespace :update_code do
desc "Rewrite parameters"
task :rewrite_params do
capifony_pretty_print "--> Rewriting parameters.yml with app/config/parameters.yml.#{stage}"
run "sh -c 'cd #{latest_release} && cp app/config/parameters.yml.#{stage} app/config/parameters.yml'"
capifony_puts_ok
end
desc "Rewrite .htaccess"
task :rewrite_htaccess do
capifony_pretty_print "--> Rewriting .htaccess with .htaccess.#{stage}"
run "sh -c 'cd #{latest_release} && cp web/.htaccess.#{stage} web/.htaccess'"
capifony_puts_ok
end
end
namespace :frontend do
desc "Rewrite frontend/app/appConfig.js"
task :rewrite_config do
set :file, "frontend/app/appConfig.js"
capifony_pretty_print "--> Rewriting #{file} with #{file}.#{stage}"
run "sh -c 'cd #{latest_release} && cp #{file}.#{stage} #{file}'"
capifony_puts_ok
end
desc "Install node modules"
task :install do
capifony_pretty_print "--> Install node modules"
run "sh -c 'cd #{latest_release}/frontend && npm install'"
capifony_puts_ok
end
desc "Build"
task :build do
capifony_pretty_print "--> Build forntend"
run "sh -c 'cd #{latest_release}/frontend && npm run build'"
capifony_puts_ok
end
end
end
# Dependences
before "symfony:composer:install", "deployment:update_code:rewrite_params"
before "symfony:composer:install", "deployment:update_code:rewrite_htaccess"
before "symfony:composer:install", "deployment:frontend:rewrite_config"
before "symfony:composer:update", "deployment:update_code:rewrite_params"
before "symfony:composer:update", "deployment:update_code:rewrite_htaccess"
before "symfony:composer:update", "deployment:frontend:rewrite_config"
before "symfony:cache:warmup", "symfony:doctrine:migrations:migrate"
after "deployment:frontend:rewrite_config", "deployment:frontend:install"
after "deployment:frontend:install", "deployment:frontend:build"
after "deploy", "deploy:cleanup"
after "deploy:cleanup", "deployment:update_site_config"
# Logging
logger.level = Logger::MAX_LEVEL