diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index f9cd80ef1..000000000 --- a/.travis.yml +++ /dev/null @@ -1,66 +0,0 @@ -language: node_js -node_js: -- 5.12.0 -before_install: -- npm i -g npm@5.3.0 -install: -- npm install -script: -- npm run lint && npm test && npm run build -sudo: false -deploy: -- provider: s3 - cache_control: private, no-store, no-cache, must-revalidate, max-age=0 - detect_encoding: true - access_key_id: $AWS_KEY - secret_access_key: $AWS_SECRET - bucket: app.topcoder-dev.com - skip_cleanup: true - local_dir: dist - on: - branch: dev -- provider: s3 - cache_control: private, no-store, no-cache, must-revalidate, max-age=0 - detect_encoding: true - access_key_id: $QA_AWS_KEY - secret_access_key: $QA_AWS_SECRET - bucket: app.topcoder-qa.com - skip_cleanup: true - local_dir: dist - on: - branch: qa-integration -- provider: s3 - cache_control: private, no-store, no-cache, must-revalidate, max-age=0 - detect_encoding: true - access_key_id: $MASTER_AWS_KEY - secret_access_key: $MASTER_AWS_SECRET - bucket: app.topcoder.com - skip_cleanup: true - local_dir: dist - on: - branch: master -env: - matrix: - - CXX=g++-4.8 - global: - # DEV_AWS_KEY - - secure: a5X4QlY2JD/sJnEBkT5WwwfWjYKq3ldRf/+Dh5x2oHB0swGzYyFxzVlezddPF8xDML+CcVoLHkd8WNM2F7qcxHZTDC5spH/ym2gX6YlRwFRTTFBRCJehgYs8Vit/s14f8gkuVV8fe2ubMiV+fpAw80tb3E+t+nCckmXwe8gDqDbHto5VIozTiqDOV/WvkPzaRQofTeNzSqjrAH/iRq8hJUx16shCO2ccdiLu7rnOuys+UwjWFRyjdLP01UZXd5u6a5XK3vigLGPBAqsEwSMgScATJjNIHwYofE5Q3ztD85jz/JoQatQf7LCnQUqkLT+xldMkOZuTlTHvzmVUOl2WYpVxWV9hXwBemvyuRPPtzIrZkKXi6OUgvpYwGgWn8eS1qulB1DYPrUWBtIYGQoxEchfNlmcrCIJ7BrbL9xiNUM8J+ZCWtNS01eSapMHdhAIUMLEsAjxBY+ArLuYAD+URB0d+JZrr9cORGnrGDB+1wI12Z/Qu5LEDp/TMOisK2PXEsaqzlaazr9lj2FXTYJQyyFMMWzq1v1o5lZ5mEJ5ea36eGApV1iQNmPrg7omhDHwKtBpMDFQWZ0Y1SrkIk3QTX6JfzsrehwAhAK2fZ25EaC6zcppAo0ia5/VZoWzxHFQyhkC47hRrM7C6nCriQPDc9kKsmTSX5rp5e/DNpiZ67qM= - # DEV_AWS_SECRET - - secure: p+od0xD/9vpMbR2AI6gZWknNAtvvIfq6jXIF98DEsDlqrrMFv4SwtuXLlCmX5PBnB/cWOkwgRhymI7/3+fLrDC+wqlhDEWyzSpVOvAcVAb5LEP7IDen0W8kTj2q9I2VRX+keL7lxQCknAf/21sRZeJfJhLGR+O3NcytEdsjlpFCopA6luZYv1QSd+nRJiTsI7I69T0hr7jZk+YioyjEEp/4qzI2qyJH7E5Ry+DD3gXnC3zva48Huq6rvOtLpgFmio1b1rNAcA55Q9Y3vb1jJyZhKpRvtel9OM9ekTxANEGJVaMzxyZXT7EFTxwxS+ub5c2HRzxedMnD3tY29ku2JJx7Ofm+Yxt9DZXSK7EV99xxE71kIhI9lZFiWZviym08MHGc4pee6+Cl6ZkiV44v4XnwbgUq8GCOkmDMQBQtGhXq7dC6jB/r7P7CJs+DIGDF7qNt/xizVOC1THS8GUCN68aWMVperP+IlUXo5d2XekhO6vjHk6o44K8A1s7yblBWXj54B6NfJnBzUK2X0g6Y2xdW6tmoKtad1r1I3062skc+UiU+6m4fGS8pLFElJNj+8N7QANoEw9oJDZfuQ47uVQzPjAA1/qdcy3ksMek0siNFbpZnMqzOJTPf2Xe7YgKuCPg0QczESXIjOeEIU0om7SWmGEIuMFqt6obQW0M3VHn0= - # QA_AWS_KEY - - secure: XG8fvQkBGUSbrZ+ZcHJadpPGKze1HrO17pl9WAzXOAFaomgZpXJIQrEmH8H03QpeFwhhM0pmWeHwnLAzSQ3j8dU8RidlR5/72X9Jdz74YJNPun7O4EJ4LE4qd3bjsS1+0IhyoaatV9OvIbCJDm1ujpHATkvUwHqt2WvVKxmy76raYqzMBNJD0xq0JrceZWwy2i0mnxLNSe/PqGREPDVWIFjb/rgLo0k2NPH7Z/ZqzTN9F/HzT7b4qmEJaQsjgBwWnMDIYdFKIVhP4nUlQBhZhuiiirUh7STOxloxe245xu2FRr+m5la2Eqpw8yf+nwsevtgnk1SaWF9LVp2VOV6AONWI5fMC/PGlEoVKf/Wt+S39wxlsIG4RL8RH0I9IypxHyfWcKz/iBVKWwpEH+IGa9Pl2XnCDJs5xHBkaVKuX76Nk8NSEG/ZxkCLBhlDSMmiivw4dQShQQv/qto1nz8rVzhj2gZUJbynsfKId2x/VrcnaPVRMSHuTRI/112wzLfENpcy1WhOJrKHZjMuoUVOLYNZs/kqygNTjqUbiqBb1t2RRuULB7RjBFMJBJKFbQA6wha1Ieh0lut3ZWbXPFkpsGCfC7S3l6Iy6U4BQcFpRDGw8MiAI+y5IPzePgKwhWxKZl0nY34trdzK4KaCabvdORYviSaBbxGiXPVsja/SY3T8= - # QA_AWS_SECRET - - secure: ALKnhODYCEtEjaDKe7YCupZPr7krQpLHkhlumUPkZVdYvNbunNDQcSDIJAEx97W9PJ0jRLQzYgoosQ+49CKOi7Lv2K+GHszBtiJ7Mc689v+lkQ686pSrGTrnTV626wLT6fxtprrFofTF8Q7Ywpp8q5A6vmTOpUFIkFBzlfEoInmvSXtM3BFTg11OFQdyhP1Pv2vSdDjFvbulCBhFo1sw8f1pRlUxALaYTE1ar1kN2EysrS5VSuK7ZdyXrmleJCwnIFshECqNUpHPU7LwYxeoTlaFGdeMFK5TuqrxR/LC6lSWTQvhMtQJzMFh8W2FwNJNqPNFmttD7G86/6o6jNxW4E0xo35VINaPi3qPdlHXFLBxMjkRzVS+I2EUjb80Hft5gK1/JXBl0RqX38sqgVGb1/u63hPR0iNqLW9CPEXXxrdifLrex+x3hW2Shg8kzGwRdE181zgdIIhnV8JiD1lsO1XrpusCjia+QjZJKp+fglq/1KGGRqHllxTN0T+6E9V8O4Opy+59aWcO8nkIJ5+INRl67MhpgJmutAfF2lgd5hMAWju5GNA77Bfd31zwpbOdetwmyp2fo81iKs1rgK4M9rFTtKsRFObDnalEqP+mwmwAg0yzhmWAMpmegYDAGfHOBPLSHpFDPRW7lrI4HTMrW2zP2W/NCIwHWpqPM/82bnc= - # MASTER_AWS_KEY - - secure: natX9uNNhOZBAkVht/f/dxT2Rkv/EP4maS3h9/dRXqejEHO9YQCTnvApGFE1SkDuH+NHoH06yx7RpAh+Gswn8CldHPF3daVnJHVgZYU2gBTyxlc5hFFV3ZmZ+hFSZgzWAXRSedw3l/SD7ceo8RebeVpSH/weDxzmHHSb429f0809wM+gWeUsNAG1sAr/oKw1t++7xIZA9p9k7EpCy8oBpHNRB30vknORNY/VFZMbp/RHfJohiL8SM9Nub2rnh27LKxik32BDCNypm+wE1cMB8642wL+MysIN7b1b1PJ9Hkahzcym8tImY0zJrui/j7tZ2ho0ATaHIc4DHna3TeM/tIK56Rtb+w4/b5rZrtIGCqCDoo6MQMkh1jL45KKeoa9Q5OgdgKqRgOQIkhy9MPQyqayUi/6RTplYXt1MO0vpHKUD2yMDZSfXWfin0XnHywTKAjjdc/lyvvC7YtrucbUu3DSbY6Eq5DH9przWdHWtXQDA0+hNjjxa6M8w2hPYBqOSM5GHF1VjlwY15hDLx/oua1VyGSfe7msd6xo0gkA/lvbA4QrOcuPYduF0cOvXuzj/RsaVqcHOAzRHvyKHaQR2UmmEQH7JoKr0/0mjXTNZX/xPlGtqRBDiWajfHhIjG4RlApbGTcdFUiuMrTNp0USA3QyV72yljWvkZ4L/9PbDjq8= - # MASTER_AWS_SECRET - - secure: fO89NVR5/+qbWD0tcHOftkGGSCa89vrYeH+UJ4zaE9kgos2W7QpIsc/ENt9NscuBOERBsrlOCzS+mBBC1ss40/GxIQbM8xS9b6y8odJqEKDCR34YDWcPEmb/kSbC0Cb7Q6r6r8fbJ0GFBOunYgiGFaGyPLlhVd68NBH2YzzRZ5R24KU7T1/3mFUz50DO/q+6NU56WurkrqTIes6YT3UNAPaXDaHJHtTifts+TibP6NpAsTDcj38gBH4re6+5MkI/iPUAaN7iA+aooDtHsKNWI0iCTyyBORfzNbCd0Nbbqv6GH/3v9RlZXg05+uOWOxjPLSH8TK3aQfGZD9uf1NmZRsNkLVVYMjUHAAZU3g0k8fxXMUtkL0nqbIoi9FTAMdHzc3aHQlU41DPbS7YV+Cs9Y2aHOx+kX1eqber6g0PUSrDSGmdFDlJqJrabHXomgRZxJ/uPyZ/JzGZQDYZxqWuhmtap79uGJOe/OKa1Oubj8wfwH3BIA1IFbLS2I5wAN5UOb0eQkTQTXS8LVtO2VicbX9YdZF1cE5uCpK1cXCv6+cNhziTXIrRFp7W/cYPMN7eZoQNxRgGfTSY+yNCKR3Qh+S8Ota8lZoB60wiPb6ISPIXbO0AwTtRHjrTUsPEfxsQPLZT4AZkYgjGbMEkzuhDVh3vR1gpQ67L8hPbNPAwh0ts= -addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-4.8 -notifications: - slack: - secure: PMGlpdBoRzMlIjCsPWdXJ1wf550b+mpX0x44ggGWNL7ErpNebfyqIbXf4VJXYQDmhVJt31ygDaxTtj8XwZJlbvQjE6WGHU26KvL/efGJJL5EmgFD8LDBFpsbn49PyoZuVOTbSzqP8d8WCCPo4oBvX2r2Q2Ixh/tUx7i4Bcv0XwNpWAR75v1Yq/NftEI48k2GcI3oHqmuEgLHdP93k1rCUM4sBsgkr4PCltZfoE2AWlF6wY59w/oFiKj4FwycY8QjJZa/zbSQq1B/9QD7n4YBY4QjVv3LmjshEiQv1HGo2rNLV+/BB5ZoQ6JEH9h+seduHNTF+mkToKbJ2YjDERLlqLFYWVQKXTqFkSdYuknguJ3uOfXFaGtPDSqTRljE6WW6UDIJi9lDpxFHjH2q848/2O03RKtYeFKJWNbVb7Q2PWTBFxx6OurYra+tbUAorQiYmAQxd0vJY+qzGIDJZIQ8yDE4C10heOhfRyU8wJSKF3xJUKKWVGfBuHivFBZOETFSg0uVBcJnsXRcErvEQz0LuKaZfP81bIokcKUGxum/xyp9mYhYqWDvIj31RUhDMiRxXTPe9PhW0mlOtRG7tm2+8G08exHPSfONSV2IPUtlQt4j2/+I22ncOwtsm6yZzXXbDjoMR2sCHIyJj3lVECOqAnCfNJ6Q0CNJ93LqxKSHdFU= diff --git a/README.md b/README.md index 309486166..222418793 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,9 @@ -#### Dev [](https://travis-ci.org/appirio-tech/topcoder-app) QA [](https://travis-ci.org/appirio-tech/topcoder-app) Master [](https://travis-ci.org/appirio-tech/topcoder-app) +#### Dev [] QA [] Master [] # Topcoder-App Topcoder-App is an Angular application that contains dashboard, profile, settings, login/registration, and design submissions. -The technologies used are NPM, Webpack, ES2015, Jade, SCSS, and Angular 1.x. +The technologies used are NPM, Webpack, ES2015, Jade, SCSS, and Angular 1.x. ## Installation @@ -128,7 +128,7 @@ See any `*.routes.js` file as an example. ### Style Guide and Naming Conventions - - Our travis build runs `npm run lint` and `npm test`, so make sure your code adheres to the code style enforced by our linters + - Our circleci build runs `npm run lint` and `npm test`, so make sure your code adheres to the code style enforced by our linters - Please use ES2015 syntax whenever possible - Use the Angular style guide mentioned below diff --git a/circle.yml b/circle.yml new file mode 100644 index 000000000..300ce9584 --- /dev/null +++ b/circle.yml @@ -0,0 +1,44 @@ +machine: + node: + version: 5.5.0 + environment: + CXX: g++-4.8 + +dependencies: + pre: + - sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y + - sudo apt-get update -y + - sudo apt-get install g++-4.8 -y + override: + - node --version + - npm --version + - nvm --version + - npm install coffeescript + - npm install + +compile: + override: + - ls node_modules/* + - npm run lint && npm run build + +test: + override: + - npm test + +deployment: + development: + branch: [dev, dev-circleci] + owner: appirio-tech + commands: + - ./deploy.sh DEV + qa: + branch: qa-integration + owner: appirio-tech + commands: + - ./deploy.sh QA + production: + branch: master + owner: appirio-tech + commands: + - ./deploy.sh PROD + diff --git a/deploy.sh b/deploy.sh new file mode 100755 index 000000000..208efb2f3 --- /dev/null +++ b/deploy.sh @@ -0,0 +1,58 @@ +#!/usr/bin/env bash + +ENV=$1 +echo $ENV +#AWS_REGION=$(eval "echo \$${ENV}_AWS_REGION") +AWS_ACCESS_KEY_ID=$(eval "echo \$${ENV}_AWS_ACCESS_KEY_ID") +AWS_SECRET_ACCESS_KEY=$(eval "echo \$${ENV}_AWS_SECRET_ACCESS_KEY") +AWS_S3_BUCKET=$(eval "echo \$${ENV}_S3_BUCKET") + +configure_aws_cli() { + aws --version + aws configure set aws_access_key_id $AWS_ACCESS_KEY_ID + aws configure set aws_secret_access_key $AWS_SECRET_ACCESS_KEY + #aws configure set default.region $AWS_REGION + aws configure set default.output json + echo "Configured AWS CLI." +} + +deploy_s3bucket() { + #chmod -R 775 ${HOME}/${CIRCLE_PROJECT_REPONAME}/dist + cat dist/app.2e9868372e0e2992d5d2.css + #aws s3 sync --dryrun ${HOME}/${CIRCLE_PROJECT_REPONAME}/dist s3://${AWS_S3_BUCKET} --cache-control private,no-store,no-cache,must-revalidate,max-age=0 + #result=`aws s3 sync ${HOME}/${CIRCLE_PROJECT_REPONAME}/dist s3://${AWS_S3_BUCKET} --cache-control private,no-store,no-cache,must-revalidate,max-age=0` + aws s3 sync --dryrun ${HOME}/${CIRCLE_PROJECT_REPONAME}/dist s3://${AWS_S3_BUCKET} --cache-control max-age=0,s-maxage=86400 --exclude "*.txt" --exclude "*.js" --exclude "*.map" --exclude "*.css" + result=`aws s3 sync ${HOME}/${CIRCLE_PROJECT_REPONAME}/dist s3://${AWS_S3_BUCKET} --cache-control max-age=0,s-maxage=86400 --exclude "*.txt" --exclude "*.js" --exclude "*.map" --exclude "*.css"` + if [ $? -eq 0 ]; then + #echo $result + echo "All html, font, image and media files are Deployed without gzip encoding!" + else + echo "Deployment Failed - $result" + exit 1 + fi + #result=`aws s3 sync ${HOME}/${CIRCLE_PROJECT_REPONAME}/dist s3://${AWS_S3_BUCKET} --cache-control private,no-store,no-cache,must-revalidate,max-age=0` + aws s3 sync --dryrun ${HOME}/${CIRCLE_PROJECT_REPONAME}/dist s3://${AWS_S3_BUCKET} --cache-control max-age=0,s-maxage=86400 --exclude "*" --include "*.txt" --include "*.js" --include "*.map" --include "*.css" --content-encoding gzip + result=`aws s3 sync ${HOME}/${CIRCLE_PROJECT_REPONAME}/dist s3://${AWS_S3_BUCKET} --cache-control max-age=0,s-maxage=86400 --exclude "*" --include "*.txt" --include "*.js" --include "*.map" --include "*.css" --content-encoding gzip` + if [ $? -eq 0 ]; then + #echo $result + echo "All css, js, and map files are Deployed! with gzip" + else + echo "Deployment Failed - $result" + exit 1 + fi + +} + +#sed -i 's/^application\/x-font-woff.*/application\/font-woff\t\t\t\twoff/' /etc/mime.types +echo -e "application/font-woff\t\t\t\twoff2" >> /etc/mime.types +echo -e "application/font-sfnt\t\t\t\tttf" >> /etc/mime.types +echo -e "application/json\t\t\t\tmap" >> /etc/mime.types +#sed -i 's/^image\/vnd.microsoft.icon.*/image\/vnd.microsoft.icon/' /etc/mime.types +#sed -i 's/^image\/x-icon.*/image\/x-icon\t\t\t\tico/' /etc/mime.types +cat /etc/mime.types | grep -i woff +cat /etc/mime.types | grep -i ico +cat /etc/mime.types | grep -i map +cat /etc/mime.types | grep -i ttf + +configure_aws_cli +deploy_s3bucket \ No newline at end of file diff --git a/webpack.config.js b/webpack.config.js index ff285298e..ce5956e1e 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,6 +1,6 @@ require('./node_modules/coffee-script/register') -const CI = process.env.TRAVIS_BRANCH +const CI = process.env.CIRCLE_BRANCH if (CI === 'master') { process.env.ENV = 'PROD'