PageRenderTime 26ms CodeModel.GetById 22ms RepoModel.GetById 0ms app.codeStats 0ms

/Rakefile

https://gitlab.com/pwgd/false-start-pwgd
Rakefile | 133 lines | 110 code | 23 blank | 0 comment | 8 complexity | 8ecd4effc3bf5831c901774d39e6a387 MD5 | raw file
  1. require "rake/clean"
  2. require "shellwords"
  3. if not ENV.key?("ENVIRONMENT") then
  4. ENV["ENVIRONMENT"] = "dev"
  5. end
  6. BUILD_DIR = "build"
  7. DEFAULT_DIR = "web/sites/default"
  8. PROFILE = "pwgd"
  9. SETTINGS_SOURCE_REL = "provisioning/settings.#{ENV['ENVIRONMENT']}.php"
  10. SETTINGS_TARGET_REL = "#{DEFAULT_DIR}/settings.local.php"
  11. SERVICES_SOURCE_REL = "provisioning/services.#{ENV['ENVIRONMENT']}.yml"
  12. SERVICES_TARGET_REL = "#{DEFAULT_DIR}/services.yml"
  13. STAGE = ""
  14. PROD = ""
  15. DEPLOY_TARGET_STAGE = ""
  16. DEPLOY_TARGET_PROD = ""
  17. CF_USER_ID = "cloudflare@agaric.com"
  18. CF_ZONE_ID = ""
  19. if ENV["ENVIRONMENT"] == "dev" then
  20. SETTINGS_SOURCE = SETTINGS_SOURCE_REL
  21. SETTINGS_TARGET = SETTINGS_TARGET_REL
  22. else
  23. SETTINGS_SOURCE = "#{BUILD_DIR}/#{SETTINGS_SOURCE_REL}"
  24. SETTINGS_TARGET = "#{BUILD_DIR}/#{SETTINGS_TARGET_REL}"
  25. SERVICES_SOURCE = "#{BUILD_DIR}/#{SERVICES_SOURCE_REL}"
  26. SERVICES_TARGET = "#{BUILD_DIR}/#{SERVICES_TARGET_REL}"
  27. end
  28. if ENV["ENVIRONMENT"] == "dev" then
  29. desc "Copy database and files from live site to local."
  30. task :sync_from_prod do
  31. sh "./vendor/bin/drush sql-dump > /tmp/paranoia.sql"
  32. sh "./vendor/bin/drush -y sql-sync @production @self"
  33. sh "./vendor/bin/drush -y rsync @production:%files/ @self:%files"
  34. sh "./vendor/bin/drush user-password admin --password=admin"
  35. end
  36. desc "Apply updates locally."
  37. task :update_local do
  38. sh "./vendor/bin/drush -y cim"
  39. sh "./vendor/bin/drush -y updb"
  40. sh "./vendor/bin/drush cr"
  41. end
  42. end
  43. if ENV["ENVIRONMENT"] == "stage" then
  44. DEPLOY_TARGET = "#{STAGE}:#{DEPLOY_TARGET_STAGE}"
  45. elsif ENV["ENVIRONMENT"] == "production" then
  46. DEPLOY_TARGET = "#{PROD}:#{DEPLOY_TARGET_PROD}"
  47. end
  48. CLEAN.include(["#{BUILD_DIR}/*"])
  49. file SETTINGS_TARGET => SETTINGS_SOURCE do
  50. cp SETTINGS_SOURCE, SETTINGS_TARGET
  51. end
  52. file SERVICES_TARGET => SERVICES_SOURCE do
  53. cp SERVICES_SOURCE, SERVICES_TARGET
  54. end
  55. task :test => ["test:behat"]
  56. task :vendor do
  57. sh "composer install"
  58. end
  59. desc "Compile CSS."
  60. task :css do
  61. sh "sass web/themes/dodge/sass/styles.scss web/themes/dodge/css/styles.css"
  62. end
  63. task :default => ["test"]
  64. desc "Install Drupal."
  65. task :drupal => [:vendor, SETTINGS_TARGET] do
  66. sh "./vendor/bin/drush -r #{Dir.pwd.shellescape}/web -y si #{PROFILE} install_configure_form.update_status_module='[0, 0]'"
  67. chmod_R "u+w", DEFAULT_DIR
  68. end
  69. task :build do
  70. rm_r BUILD_DIR
  71. mkdir_p BUILD_DIR
  72. sh "git archive HEAD | tar -x -C #{BUILD_DIR}"
  73. sh "composer install -d #{BUILD_DIR} --no-dev"
  74. cp SETTINGS_SOURCE, SETTINGS_TARGET
  75. cp SERVICES_SOURCE, SERVICES_TARGET
  76. sh "sass #{BUILD_DIR}/web/themes/dodge/sass/styles.scss #{BUILD_DIR}/web/themes/dodge/css/styles.css"
  77. end
  78. task :deploy_config => [:build] do
  79. sh "rsync -rz --delete #{BUILD_DIR}/config/ #{DEPLOY_TARGET}/config/"
  80. end
  81. task :deploy_web => [:build] do
  82. sh "rsync -rz --delete --exclude sites/default/files #{BUILD_DIR}/web/ #{DEPLOY_TARGET}/web/"
  83. end
  84. task :deploy_vendor => [:build] do
  85. sh "rsync -rz --delete --links #{BUILD_DIR}/vendor/ #{DEPLOY_TARGET}/vendor/"
  86. end
  87. task :deploy => [:deploy_config, :deploy_vendor, :deploy_web] do
  88. sh "./build/vendor/bin/drush @#{ENV['ENVIRONMENT']} --alias-path=#{BUILD_DIR}/drush/ -y updb"
  89. sh "./build/vendor/bin/drush @#{ENV['ENVIRONMENT']} --alias-path=#{BUILD_DIR}/drush/ -y cim"
  90. sh "./build/vendor/bin/drush @#{ENV['ENVIRONMENT']} --alias-path=#{BUILD_DIR}/drush/ cr"
  91. end
  92. desc "Copy database and files from live site to stage."
  93. task :sync_prod_to_stage do
  94. sh "ssh -A #{PROD} rsync -rz --stats --exclude styles \
  95. --exclude css --exclude js #{DEPLOY_TARGET_PROD}/web/sites/default/files/ \
  96. --delete #{STAGE}:#{DEPLOY_TARGET_STAGE}/web/sites/default/files/"
  97. sh "ssh -C #{PROD} drush -r #{DEPLOY_TARGET_PROD}/web \
  98. sql-dump --structure-tables-key=common | \
  99. ssh -C #{STAGE} drush -r #{DEPLOY_TARGET_STAGE}/web sql-cli"
  100. end
  101. namespace :test do
  102. desc "Run Behat tests."
  103. task :behat => [:vendor] do
  104. sh "./vendor/bin/behat --tags '~@javascript' --format pretty --out std --format junit --out reports"
  105. end
  106. desc "Run performance tests."
  107. task :performance => [:vendor] do
  108. sh "./vendor/bin/phpunit --bootstrap ./vendor/autoload.php --log-junit reports/performance.xml tests/"
  109. end
  110. end