Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- #===============================================================================
- # DESCRIPTION:
- #===============================================================================
- # This script creates a build of the project ready to be uploaded to beanstalk.
- # Requires pyton 2.7.x
- #===============================================================================
- # COMMON ISSUES:
- #===============================================================================
- # -If you upload the output to a sample application, it will fail.
- # -Version format must be 0.0.0
- #===============================================================================
- # CONSTANTS
- #===============================================================================
- CURRENT_VERSION="1.0.0"
- OUTPUT_NAME="file-name-without-extension"
- PRODUCTION_SETTINGS_JSON="./your-project-directory/settings-prod.json"
- PROJECT_DIRECTORY="./your-project-directory"
- OUTPUT_DIRECTORY="./the-output-directory"
- ROOT_URL="http://www.SOMEENVIRONMENT-env.us-west-2.elasticbeanstalk.com"
- MONGO_URL="none"
- #===============================================================================
- # SAY HELLO
- #===============================================================================
- initial_directory=$(pwd) # This file's local path
- clear
- echo "COOKING OUTPUT"
- echo "========================================================="
- #===============================================================================
- # RAW PROJECT BUILD
- #===============================================================================
- echo "> BUILDING RAW PROJECT"
- cd $initial_directory
- cd $PROJECT_DIRECTORY
- rm -f -R "../build/bundle"
- meteor build --directory ../build/
- #===============================================================================
- # SET PRODUCTION ENVIRONMENT VARIABLES
- #===============================================================================
- cd $initial_directory
- json=`cat $PRODUCTION_SETTINGS_JSON`
- cd $OUTPUT_DIRECTORY/bundle
- mkdir -p .ebextensions
- echo "option_settings:" >> .ebextensions/environment.config
- echo " - option_name: MONGO_URL" >> .ebextensions/environment.config
- echo " value: $MONGO_URL" >> .ebextensions/environment.config
- echo "option_settings:" >> .ebextensions/environment.config
- echo " - option_name: ROOT_URL" >> .ebextensions/environment.config
- echo " value: "$ROOT_URL"" >> .ebextensions/environment.config
- echo "files:" >> .ebextensions/environment.config
- echo " '/tmp/settings.json':" >> .ebextensions/environment.config
- echo " content : |" >> .ebextensions/environment.config
- echo " "$json >> .ebextensions/environment.config
- echo "option_settings:" >> .ebextensions/environment.config
- echo " - namespace: aws:elasticbeanstalk:application:environment" >> .ebextensions/environment.config
- echo " option_name: METEOR_SETTINGS_FILE" >> .ebextensions/environment.config
- echo " value: '/tmp/settings.json'" >> .ebextensions/environment.config
- chmod 444 .ebextensions/environment.config
- echo "> ADDING 'settings.json' AS ENV VAR"
- #===============================================================================
- # CREATE PACKAGE.JSON
- #===============================================================================
- cd $initial_directory
- cd $OUTPUT_DIRECTORY/bundle
- # Write base package.json
- echo '{
- "name": "'$OUTPUT_NAME'",
- "version": "'$CURRENT_VERSION'",
- "scripts": {
- "start": "node main.js"
- },
- "dependencies": {
- }
- }' > ./package.json
- # Add dependencies from meteor in packages.json
- # Then add extra dependencies defined by us.
- EXTRA_DEPENDENCIES='{"forever": "*"}'
- meteor_packages=$(cat ./programs/server/package.json)
- packages=$(cat ./package.json)
- packages_updated=`python <<END
- import json;
- # We cannot operate directly bash variables, so we make a copy.
- a = $packages
- b = $meteor_packages
- a['dependencies'] = b['dependencies']
- for key, value in $EXTRA_DEPENDENCIES.iteritems():
- a['dependencies'].update({key: value})
- print json.dumps(a, sort_keys=False, indent=4, separators=(',', ': '));
- END`
- echo "$packages_updated" > ./package.json
- chmod 444 ./package.json
- echo "> ADDING 'package.json'"
- #===============================================================================
- # ZIP OUTPUT
- #===============================================================================
- cd $initial_directory
- cd $OUTPUT_DIRECTORY/bundle
- zip -FSrq "../$OUTPUT_NAME-$CURRENT_VERSION.zip" .
- echo "> ZIP THE OUTPUT"
- #===============================================================================
- # CLEAN THE HOUSE
- #===============================================================================
- cd $initial_directory
- cd $OUTPUT_DIRECTORY
- rm -R -f ./bundle
- echo "> CLEAN THE HOUSE"
- #===============================================================================
- # SAY GOODBYE
- #===============================================================================
- echo "========================================================="
- echo "YOU CAN UPLOAD THE PROJECT TO A BEANSTALK ENVIRONMENT NOW"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement