Advertisement
Guest User

Untitled

a guest
Jan 5th, 2017
197
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 5.01 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. #===============================================================================
  4. # DESCRIPTION:
  5. #===============================================================================
  6. # This script creates a build of the project ready to be uploaded to beanstalk.
  7. # Requires pyton 2.7.x
  8.  
  9. #===============================================================================
  10. # COMMON ISSUES:
  11. #===============================================================================
  12. # -If you upload the output to a sample application, it will fail.
  13. # -Version format must be 0.0.0
  14.  
  15. #===============================================================================
  16. # CONSTANTS
  17. #===============================================================================
  18. CURRENT_VERSION="1.0.0"
  19. OUTPUT_NAME="file-name-without-extension"
  20. PRODUCTION_SETTINGS_JSON="./your-project-directory/settings-prod.json"
  21. PROJECT_DIRECTORY="./your-project-directory"
  22. OUTPUT_DIRECTORY="./the-output-directory"
  23. ROOT_URL="http://www.SOMEENVIRONMENT-env.us-west-2.elasticbeanstalk.com"
  24. MONGO_URL="none"
  25.  
  26. #===============================================================================
  27. # SAY HELLO
  28. #===============================================================================
  29. initial_directory=$(pwd)  #  This file's local path
  30. clear
  31. echo "COOKING OUTPUT"
  32. echo "========================================================="
  33.  
  34. #===============================================================================
  35. # RAW PROJECT BUILD
  36. #===============================================================================
  37. echo "> BUILDING RAW PROJECT"
  38. cd $initial_directory
  39. cd $PROJECT_DIRECTORY
  40. rm -f -R "../build/bundle"
  41. meteor build --directory ../build/
  42.  
  43. #===============================================================================
  44. # SET PRODUCTION ENVIRONMENT VARIABLES
  45. #===============================================================================
  46. cd $initial_directory
  47. json=`cat $PRODUCTION_SETTINGS_JSON`
  48. cd $OUTPUT_DIRECTORY/bundle
  49. mkdir -p .ebextensions
  50. echo "option_settings:" >> .ebextensions/environment.config
  51. echo "  - option_name: MONGO_URL" >> .ebextensions/environment.config
  52. echo "    value: $MONGO_URL" >> .ebextensions/environment.config
  53. echo "option_settings:" >> .ebextensions/environment.config
  54. echo "  - option_name: ROOT_URL" >> .ebextensions/environment.config
  55. echo "    value: "$ROOT_URL"" >> .ebextensions/environment.config
  56. echo "files:" >> .ebextensions/environment.config
  57. echo " '/tmp/settings.json':" >> .ebextensions/environment.config
  58. echo "    content : |" >> .ebextensions/environment.config
  59. echo "        "$json >> .ebextensions/environment.config
  60. echo "option_settings:" >> .ebextensions/environment.config
  61. echo "  - namespace:  aws:elasticbeanstalk:application:environment" >> .ebextensions/environment.config
  62. echo "    option_name: METEOR_SETTINGS_FILE" >> .ebextensions/environment.config
  63. echo "    value: '/tmp/settings.json'" >> .ebextensions/environment.config
  64. chmod 444 .ebextensions/environment.config
  65. echo "> ADDING 'settings.json' AS ENV VAR"
  66.  
  67. #===============================================================================
  68. # CREATE PACKAGE.JSON
  69. #===============================================================================
  70. cd $initial_directory
  71. cd $OUTPUT_DIRECTORY/bundle
  72.  
  73. # Write base package.json
  74. echo '{
  75.  "name": "'$OUTPUT_NAME'",
  76.  "version": "'$CURRENT_VERSION'",
  77.  "scripts": {
  78.    "start": "node main.js"
  79.  },
  80.  "dependencies": {
  81.  }
  82. }' > ./package.json
  83.  
  84. # Add dependencies from meteor in packages.json
  85. # Then add extra dependencies defined by us.
  86. EXTRA_DEPENDENCIES='{"forever": "*"}'
  87. meteor_packages=$(cat ./programs/server/package.json)
  88. packages=$(cat ./package.json)
  89. packages_updated=`python <<END
  90. import json;
  91. # We cannot operate directly bash variables, so we make a copy.
  92. a = $packages
  93. b = $meteor_packages
  94. a['dependencies'] = b['dependencies']
  95. for key, value in $EXTRA_DEPENDENCIES.iteritems():
  96.     a['dependencies'].update({key: value})
  97. print json.dumps(a, sort_keys=False, indent=4, separators=(',', ': '));
  98. END`
  99. echo "$packages_updated" > ./package.json
  100. chmod 444 ./package.json
  101. echo "> ADDING 'package.json'"
  102.  
  103. #===============================================================================
  104. # ZIP OUTPUT
  105. #===============================================================================
  106. cd $initial_directory
  107. cd $OUTPUT_DIRECTORY/bundle
  108. zip -FSrq "../$OUTPUT_NAME-$CURRENT_VERSION.zip" .
  109. echo "> ZIP THE OUTPUT"
  110.  
  111. #===============================================================================
  112. # CLEAN THE HOUSE
  113. #===============================================================================
  114. cd $initial_directory
  115. cd $OUTPUT_DIRECTORY
  116. rm -R -f ./bundle
  117. echo "> CLEAN THE HOUSE"
  118.  
  119. #===============================================================================
  120. # SAY GOODBYE
  121. #===============================================================================
  122. echo "========================================================="
  123. echo "YOU CAN UPLOAD THE PROJECT TO A BEANSTALK ENVIRONMENT NOW"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement