Advertisement
Guest User

capifony/deploy-rb

a guest
Jul 25th, 2014
248
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 4.98 KB | None | 0 0
  1. #-----------------------------------------------------------
  2. # General
  3. #-----------------------------------------------------------
  4.  
  5. set :application,                       'SOD'
  6.  
  7. set :keep_releases,                     3
  8. set :use_composer,                      true
  9. set :dump_assetic_assets,               true
  10. set :model_manager,                     'doctrine'
  11. set :deploy_via,                        :remote_cache
  12. set :vendors_mode,                      'install'
  13.  
  14. set :php_bin,                           '/usr/bin/php'
  15. set :composer_bin,                      '/usr/local/bin/composer'
  16.  
  17. #-----------------------------------------------------------
  18. # multi stage
  19. #-----------------------------------------------------------
  20.  
  21. set :stages,                            %w[pre prod]
  22. set :default_stage,                     'pre'
  23. set :stage_dir,                         'app/config/deploy'
  24. require                                 'capistrano/ext/multistage'
  25.  
  26. #-----------------------------------------------------------
  27. # Users and permission
  28. #-----------------------------------------------------------
  29.  
  30. set :webserver_user,                    'www-data'
  31. set :permission_method,                 :chmod
  32. set :use_sudo,                          true
  33. set :writable_dirs,                     ['app/cache', 'app/logs', web_path + '/media']
  34. set :shared_children,                   [ app_path + '/logs', web_path + '/media']
  35.  
  36. ssh_options[:forward_agent] =           true
  37. default_run_options[:pty]   =           true
  38.  
  39. #-----------------------------------------------------------
  40. # Git
  41. #-----------------------------------------------------------
  42.  
  43. set :repository,                        'git@bitbucket.org:tadium/sod.git'
  44. set :scm,                               :git
  45. set :branch,                            'master'
  46.  
  47. #-----------------------------------------------------------
  48. # Tasks
  49. #-----------------------------------------------------------
  50.  
  51. before 'symfony:composer:install', "deploy:move_files"
  52. before 'symfony:composer:install', 'composer:copy_vendors'
  53. before 'symfony:composer:update', "deploy:move_files"
  54. before 'symfony:composer:update', 'composer:copy_vendors'
  55.  
  56. after "symfony:cache:warmup", "symfony:project:permissions"
  57. #after "deploy:update", "symfony:rabbit:setup"
  58. after "deploy:update", "symfony:doctrine:schema:update"
  59. after "deploy:update", "deploy:cleanup"
  60.  
  61. namespace :composer do
  62.   task :copy_vendors, :except => { :no_release => true } do
  63.     capifony_pretty_print "--> Copy vendor directory from previous release"
  64.     run "vendorDir=#{current_path}/vendor; if [ -d $vendorDir ] || [ -h $vendorDir ]; then cp -a $vendorDir #{latest_release}/vendor; fi;"
  65.     capifony_puts_ok
  66.   end
  67. end
  68.  
  69. namespace :symfony do
  70.     namespace :rabbit do
  71.         desc "Create Rabbit MQ channels"
  72.         task :setup, :roles => :app do
  73.             capifony_pretty_print "--> Create Rabbit MQ channels"
  74.             run "php #{current_path}/app/console rabbitmq:setup-fabric --env=dev"
  75.             run "php #{current_path}/app/console rabbitmq:setup-fabric --env=prod"
  76.             capifony_puts_ok
  77.         end
  78.     end
  79. end
  80.  
  81. namespace :symfony do
  82.     namespace :doctrine do
  83.         namespace :schema do
  84.             desc "Force Schema Update"
  85.             task :update, :roles => :app do
  86.                 capifony_pretty_print "--> Force Schema Update"
  87.                 run "php #{current_path}/app/console doctrine:schema:update --force"
  88.                 capifony_puts_ok
  89.             end
  90.         end
  91.     end
  92. end
  93.  
  94. namespace :symfony do
  95.     namespace :project do
  96.         desc "Fixes symfony directory permissions"
  97.         task :permissions do
  98.             capifony_pretty_print "--> Fixing permissions"
  99.             run "sudo mkdir -p #{latest_release}/#{cache_path}/prod/translations"
  100.             run "sudo chown -R www-data:www-data #{latest_release}/#{cache_path}"
  101.             run "sudo chown -R www-data:www-data #{latest_release}/#{log_path}"
  102.             run "sudo chown -R www-data:www-data #{latest_release}/web/media"
  103.             capifony_puts_ok
  104.         end
  105.     end
  106. end
  107.  
  108. namespace :symfony do
  109.     namespace :cache do
  110.         desc "Fixes symfony directory permissions"
  111.         task :warmup do
  112.             capifony_pretty_print "--> Fixing permissions"
  113.             run "#{try_sudo} sh -c 'cd #{latest_release} && #{php_bin} #{symfony_console} cache:warmup --env=prod'"
  114.             capifony_puts_ok
  115.         end
  116.     end
  117. end
  118.  
  119.  
  120.  
  121. namespace :deploy do
  122.     desc "Move configuration files"
  123.     task :move_files, :roles => :app do
  124.         capifony_pretty_print "--> Move configuration files"
  125.         run "mv #{latest_release}/app/config/parameters/#{stage}.yml #{latest_release}/app/config/parameters.yml"
  126.         capifony_puts_ok
  127.   end
  128. end
  129.  
  130. #-----------------------------------------------------------
  131. # Output
  132. #-----------------------------------------------------------
  133.  
  134. # IMPORTANT = 0
  135. # INFO      = 1
  136. # DEBUG     = 2
  137. # TRACE     = 3
  138. # MAX_LEVEL = 3
  139. logger.level = Logger::MAX_LEVEL
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement