Skip to content

Commit

Permalink
Revert "Masterscript v1.3 upgrade"
Browse files Browse the repository at this point in the history
  • Loading branch information
Gunasekar-K committed Mar 8, 2019
1 parent 23c302f commit d145f99
Show file tree
Hide file tree
Showing 3 changed files with 211 additions and 65 deletions.
95 changes: 33 additions & 62 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,18 +14,28 @@ jobs:
- run:
name: Installation of build dependencies.
command: |
apk update
apk add --no-cache bash openssl curl
apk upgrade
apk add --no-cache bash
- run:
name: Set some ENV vars
command: |
echo export TEST_VAR_01=\"This is TEST_VAR_01\" >> "$BASH_ENV"
echo export TEST_VAR_02=\"This is TEST_VAR_02\" >> "$BASH_ENV"
# Restoration of node_modules from cache.
- restore_cache:
key: docker-node-modules-v3-{{ checksum "package-lock.json" }}

- run:
name: Check ENV vars
command: |
echo $TEST_VAR_01
echo $TEST_VAR_02
# Build of Docker image.
- run:
name: Build of Docker image
command: ./build.sh
command: ./build.sh development

# Caching node modules.
- save_cache:
Expand All @@ -39,34 +49,20 @@ jobs:
command: |
apk add --no-cache jq py-pip sudo
sudo pip install awscli --upgrade
- deploy:
name: Running MasterScript
command: |
git clone --branch v1.3 https://github.com/topcoder-platform/tc-deploy-scripts ../buildscript
cp ./../buildscript/master_deploy.sh .
cp ./../buildscript/buildenv.sh .
cp ./../buildscript/awsconfiguration.sh .
./awsconfiguration.sh DEV
source awsenvconf
./buildenv.sh -e DEV -b dev_communityapp_deployvar
source buildenvvar
./master_deploy.sh -d ECS -e DEV -t latest -s dev_communityapp_taskvar -i communityapp
command: ./deploy.sh DEV $CIRCLE_SHA1
# Build & Deploy against testing backend
"build-test":
docker:
- image: docker:17.11.0-ce-git
environment:
ENV: $BASH_ENV
steps:
# Initialization.
- checkout
- setup_remote_docker
- run:
name: Installation of build dependencies.
command: |
apk update
apk add --no-cache bash openssl curl
apk upgrade
command: apk add --no-cache bash

# Restoration of node_modules from cache.
- restore_cache:
Expand All @@ -75,7 +71,7 @@ jobs:
# Build of Docker image.
- run:
name: Build of Docker image
command: ./build.sh
command: ./build.sh test

# Caching node modules.
- save_cache:
Expand All @@ -89,34 +85,21 @@ jobs:
command: |
apk add --no-cache jq py-pip sudo
sudo pip install awscli --upgrade
- deploy:
name: Running MasterScript
command: |
git clone --branch v1.3 https://github.com/topcoder-platform/tc-deploy-scripts ../buildscript
cp ./../buildscript/master_deploy.sh .
cp ./../buildscript/buildenv.sh .
cp ./../buildscript/awsconfiguration.sh .
./awsconfiguration.sh DEV
source awsenvconf
./buildenv.sh -e DEV -b test_communityapp_deployvar
source buildenvvar
./master_deploy.sh -d ECS -e DEV -t latest -s test_communityapp_taskvar -i communityapp
# Build & Deploy against prod api backend
command: ./deploy.sh TEST $CIRCLE_SHA1

# Build & Deploy against testing backend
"build-prod-beta":
docker:
- image: docker:17.11.0-ce-git
environment:
ENV: $BASH_ENV
steps:
# Initialization.
- checkout
- setup_remote_docker
- run:
name: Installation of build dependencies.
command: |
apk update
apk add --no-cache bash openssl curl
apk upgrade
command: apk add --no-cache bash

# Restoration of node_modules from cache.
- restore_cache:
Expand All @@ -125,7 +108,7 @@ jobs:
# Build of Docker image.
- run:
name: Build of Docker image
command: ./build.sh
command: ./build.sh production_beta

# Caching node modules.
- save_cache:
Expand All @@ -139,18 +122,10 @@ jobs:
command: |
apk add --no-cache jq py-pip sudo
sudo pip install awscli --upgrade
- deploy:
name: Running MasterScript
command: |
git clone --branch v1.3 https://github.com/topcoder-platform/tc-deploy-scripts ../buildscript
cp ./../buildscript/master_deploy.sh .
cp ./../buildscript/buildenv.sh .
cp ./../buildscript/awsconfiguration.sh .
./awsconfiguration.sh PROD
source awsenvconf
./buildenv.sh -e PROD -b beta_communityapp_deployvar
source buildenvvar
./master_deploy.sh -d ECS -e PROD -t latest -s beta_communityapp_taskvar -i communityapp
command: ./deploy.sh PRODBETA $CIRCLE_SHA1

# Build & Deploy against production backend
"build-prod":
docker:
Expand Down Expand Up @@ -210,28 +185,24 @@ workflows:
jobs:
# Development builds are executed on "new-develop" branch only.
- "build-dev":
context : org-global
filters:
branches:
only:
- develop
only: develop
# This is alternate dev env for parallel testing
- "build-test":
context : org-global
filters:
branches:
only:
- hot-fixes
- develop_masterscript
branches:
only:
- hot-fixes
- performance-project
# This is beta env for production soft releases
- "build-prod-beta":
context : org-global
filters:
branches:
only:
- hot-fixes
- develop
- develop_masterscript
- performance-project
# Production builds are exectuted only on tagged commits to the
# master branch.
- "build-prod":
Expand Down
77 changes: 77 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,83 @@ LABEL app="Community App" version="1.0"
WORKDIR /opt/app
COPY . .

################################################################################
# Receiving of build arguments.

ARG AUTH0_CLIENT_ID
ARG CDN_URL
ARG COGNITIVE_NEWSLETTER_SIGNUP_APIKEY
ARG COGNITIVE_NEWSLETTER_SIGNUP_URL
ARG CONTENTFUL_CDN_API_KEY
ARG CONTENTFUL_PREVIEW_API_KEY
ARG CONTENTFUL_SPACE_ID

# Credentials for access to Zurich space in Contentful CMS
ARG CONTENTFUL_ZURICH_SPACE_ID
ARG CONTENTFUL_ZURICH_CDN_API_KEY
ARG CONTENTFUL_ZURICH_PREVIEW_API_KEY

# Credentials for access to TopGear space in Contentful CMS
ARG CONTENTFUL_TOPGEAR_SPACE_ID
ARG CONTENTFUL_TOPGEAR_CDN_API_KEY
ARG CONTENTFUL_TOPGEAR_PREVIEW_API_KEY

ARG FILESTACK_API_KEY
ARG FILESTACK_SUBMISSION_CONTAINER

# Credentials for Mailchimp service
ARG MAILCHIMP_API_KEY
ARG MAILCHIMP_BASE_URL

ARG NODE_CONFIG_ENV
ARG OPEN_EXCHANGE_RATES_KEY
ARG SEGMENT_IO_API_KEY
ARG SERVER_API_KEY

# TC M2M credentials for Community App server
ARG TC_M2M_CLIENT_ID
ARG TC_M2M_CLIENT_SECRET
ARG TC_M2M_AUDIENCE
ARG TC_M2M_GRANT_TYPE

################################################################################
# Setting of environment variables in the Docker image.

ENV AUTH0_CLIENT_ID=$AUTH0_CLIENT_ID
ENV CDN_URL=$CDN_URL
ENV COGNITIVE_NEWSLETTER_SIGNUP_APIKEY=$COGNITIVE_NEWSLETTER_SIGNUP_APIKEY
ENV COGNITIVE_NEWSLETTER_SIGNUP_URL=$COGNITIVE_NEWSLETTER_SIGNUP_URL
ENV CONTENTFUL_CDN_API_KEY=$CONTENTFUL_CDN_API_KEY
ENV CONTENTFUL_PREVIEW_API_KEY=$CONTENTFUL_PREVIEW_API_KEY
ENV CONTENTFUL_SPACE_ID=$CONTENTFUL_SPACE_ID

# Credentials for access to Zurich space in Contentful CMS
ENV CONTENTFUL_ZURICH_SPACE_ID=$CONTENTFUL_ZURICH_SPACE_ID
ENV CONTENTFUL_ZURICH_CDN_API_KEY=$CONTENTFUL_ZURICH_CDN_API_KEY
ENV CONTENTFUL_ZURICH_PREVIEW_API_KEY=$CONTENTFUL_ZURICH_PREVIEW_API_KEY

# Credentials for access to TopGear space in Contentful CMS
ENV CONTENTFUL_TOPGEAR_SPACE_ID=$CONTENTFUL_TOPGEAR_SPACE_ID
ENV CONTENTFUL_TOPGEAR_CDN_API_KEY=$CONTENTFUL_TOPGEAR_CDN_API_KEY
ENV CONTENTFUL_TOPGEAR_PREVIEW_API_KEY=$CONTENTFUL_TOPGEAR_PREVIEW_API_KEY

ENV FILESTACK_API_KEY=$FILESTACK_API_KEY
ENV FILESTACK_SUBMISSION_CONTAINER=$FILESTACK_SUBMISSION_CONTAINER

# Credentials for Mailchimp service
ENV MAILCHIMP_API_KEY=$MAILCHIMP_API_KEY
ENV MAILCHIMP_BASE_URL=$MAILCHIMP_BASE_URL

ENV NODE_CONFIG_ENV=$NODE_CONFIG_ENV
ENV OPEN_EXCHANGE_RATES_KEY=$OPEN_EXCHANGE_RATES_KEY
ENV SEGMENT_IO_API_KEY=$SEGMENT_IO_API_KEY
ENV SERVER_API_KEY=$SERVER_API_KEY

# TC M2M credentials for Community App server
ENV TC_M2M_CLIENT_ID=$TC_M2M_CLIENT_ID
ENV TC_M2M_CLIENT_SECRET=$TC_M2M_CLIENT_SECRET
ENV TC_M2M_AUDIENCE=$TC_M2M_AUDIENCE
ENV TC_M2M_GRANT_TYPE=$TC_M2M_GRANT_TYPE

################################################################################
# Testing and build of the application inside the container.
Expand Down
104 changes: 101 additions & 3 deletions build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,107 @@ set -eo pipefail
# This script expects a single argument: NODE_CONFIG_ENV, which must be either
# "development" or "production".

NODE_CONFIG_ENV=$1

# Selects proper AWS_ACCOUNT_ID / AWS_REGION for dev / prod builds. Fails
# execution, if NODE_CONFIG_ENV argument is missing or incorrect.
if [ $NODE_CONFIG_ENV == production ]
then
AWS_ACCOUNT_ID=$PROD_AWS_ACCOUNT_ID
AWS_REGION=$PROD_AWS_REGION
CDN_URL=$PROD_CDN_URL
SERVER_API_KEY=$PROD_SERVER_API_KEY
FILESTACK_API_KEY=$PROD_FILESTACK_API_KEY
FILESTACK_SUBMISSION_CONTAINER=$PROD_FILESTACK_SUBMISSION_CONTAINER
SEGMENT_IO_API_KEY=$PROD_SEGMENT_IO_API_KEY
AWS_ECS_CLUSTER=$PROD_AWS_ECS_CLUSTER
AUTH0_CLIENT_ID=$PROD_AUTH0_CLIENT_ID

TC_M2M_CLIENT_ID=$PROD_TC_M2M_CLIENT_ID
TC_M2M_CLIENT_SECRET=$PROD_TC_M2M_CLIENT_SECRET
TC_M2M_AUDIENCE=$PROD_TC_M2M_AUDIENCE
TC_M2M_GRANT_TYPE=$PROD_TC_M2M_GRANT_TYPE

elif [ $NODE_CONFIG_ENV == development ]
then
AWS_ACCOUNT_ID=$DEV_AWS_ACCOUNT_ID
AWS_REGION=$DEV_AWS_REGION
CDN_URL=$DEV_CDN_URL
SERVER_API_KEY=$DEV_SERVER_API_KEY
FILESTACK_API_KEY=$DEV_FILESTACK_API_KEY
FILESTACK_SUBMISSION_CONTAINER=$DEV_FILESTACK_SUBMISSION_CONTAINER
SEGMENT_IO_API_KEY=$DEV_SEGMENT_IO_API_KEY
AWS_ECS_CLUSTER=$DEV_AWS_ECS_CLUSTER

TC_M2M_CLIENT_ID=$DEV_TC_M2M_CLIENT_ID
TC_M2M_CLIENT_SECRET=$DEV_TC_M2M_CLIENT_SECRET
TC_M2M_AUDIENCE=$DEV_TC_M2M_AUDIENCE
TC_M2M_GRANT_TYPE=$DEV_TC_M2M_GRANT_TYPE

elif [ $NODE_CONFIG_ENV == test ]
then
AWS_ACCOUNT_ID=$TEST_AWS_ACCOUNT_ID
AWS_REGION=$TEST_AWS_REGION
CDN_URL=$TEST_CDN_URL
SERVER_API_KEY=$TEST_SERVER_API_KEY
FILESTACK_API_KEY=$TEST_FILESTACK_API_KEY
FILESTACK_SUBMISSION_CONTAINER=$TEST_FILESTACK_SUBMISSION_CONTAINER
SEGMENT_IO_API_KEY=$TEST_SEGMENT_IO_API_KEY
AWS_ECS_CLUSTER=$TEST_AWS_ECS_CLUSTER
AUTH0_CLIENT_ID=$DEV_AUTH0_CLIENT_ID

TC_M2M_CLIENT_ID=$DEV_TC_M2M_CLIENT_ID
TC_M2M_CLIENT_SECRET=$DEV_TC_M2M_CLIENT_SECRET
TC_M2M_AUDIENCE=$DEV_TC_M2M_AUDIENCE
TC_M2M_GRANT_TYPE=$DEV_TC_M2M_GRANT_TYPE
elif [ $NODE_CONFIG_ENV == production_beta ]
then
AWS_ACCOUNT_ID=$PRODBETA_AWS_ACCOUNT_ID
AWS_REGION=$PRODBETA_AWS_REGION
CDN_URL=$PRODBETA_CDN_URL
SERVER_API_KEY=$PRODBETA_SERVER_API_KEY
FILESTACK_API_KEY=$PRODBETA_FILESTACK_API_KEY
FILESTACK_SUBMISSION_CONTAINER=$PRODBETA_FILESTACK_SUBMISSION_CONTAINER
SEGMENT_IO_API_KEY=$PRODBETA_SEGMENT_IO_API_KEY
AWS_ECS_CLUSTER=$PRODBETA_AWS_ECS_CLUSTER
AUTH0_CLIENT_ID=$PRODBETA_AUTH0_CLIENT_ID

TC_M2M_CLIENT_ID=$PRODBETA_TC_M2M_CLIENT_ID
TC_M2M_CLIENT_SECRET=$PRODBETA_TC_M2M_CLIENT_SECRET
TC_M2M_AUDIENCE=$PRODBETA_TC_M2M_AUDIENCE
TC_M2M_GRANT_TYPE=$PRODBETA_TC_M2M_GRANT_TYPE
else
exit 1
fi

# Builds Docker image of the app.
TAG="communityapp:latest"
docker build -t $TAG .
TAG=$AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/$AWS_ECS_CLUSTER:$CIRCLE_SHA1
docker build -t $TAG \
--build-arg AUTH0_CLIENT_ID=$AUTH0_CLIENT_ID \
--build-arg CDN_URL=$CDN_URL \
--build-arg COGNITIVE_NEWSLETTER_SIGNUP_APIKEY=$COGNITIVE_NEWSLETTER_SIGNUP_APIKEY \
--build-arg COGNITIVE_NEWSLETTER_SIGNUP_URL=$COGNITIVE_NEWSLETTER_SIGNUP_URL \
--build-arg CONTENTFUL_CDN_API_KEY=$CONTENTFUL_CDN_API_KEY \
--build-arg CONTENTFUL_PREVIEW_API_KEY=$CONTENTFUL_PREVIEW_API_KEY \
--build-arg CONTENTFUL_SPACE_ID=$CONTENTFUL_SPACE_ID \
--build-arg CONTENTFUL_ZURICH_SPACE_ID=$CONTENTFUL_ZURICH_SPACE_ID \
--build-arg CONTENTFUL_ZURICH_CDN_API_KEY=$CONTENTFUL_ZURICH_CDN_API_KEY \
--build-arg CONTENTFUL_ZURICH_PREVIEW_API_KEY=$CONTENTFUL_ZURICH_PREVIEW_API_KEY \
--build-arg CONTENTFUL_TOPGEAR_CDN_API_KEY=$CONTENTFUL_TOPGEAR_CDN_API_KEY \
--build-arg CONTENTFUL_TOPGEAR_PREVIEW_API_KEY=$CONTENTFUL_TOPGEAR_PREVIEW_API_KEY \
--build-arg CONTENTFUL_TOPGEAR_SPACE_ID=$CONTENTFUL_TOPGEAR_SPACE_ID \
--build-arg FILESTACK_API_KEY=$FILESTACK_API_KEY \
--build-arg FILESTACK_SUBMISSION_CONTAINER=$FILESTACK_SUBMISSION_CONTAINER \
--build-arg MAILCHIMP_API_KEY=$MAILCHIMP_API_KEY \
--build-arg MAILCHIMP_BASE_URL=$MAILCHIMP_BASE_URL \
--build-arg NODE_CONFIG_ENV=$NODE_CONFIG_ENV \
--build-arg OPEN_EXCHANGE_RATES_KEY=$OPEN_EXCHANGE_RATES_KEY \
--build-arg SEGMENT_IO_API_KEY=$SEGMENT_IO_API_KEY \
--build-arg SERVER_API_KEY=$SERVER_API_KEY \
--build-arg TC_M2M_CLIENT_ID=$TC_M2M_CLIENT_ID \
--build-arg TC_M2M_CLIENT_SECRET=$TC_M2M_CLIENT_SECRET \
--build-arg TC_M2M_AUDIENCE=$TC_M2M_AUDIENCE \
--build-arg TC_M2M_GRANT_TYPE=$TC_M2M_GRANT_TYPE .

# Copies "node_modules" from the created image, if necessary for caching.
docker create --name app $TAG
Expand All @@ -31,4 +129,4 @@ fi
if [ "$UPDATE_CACHE" == 1 ]
then
docker cp app:/opt/app/node_modules .
fi
fi

0 comments on commit d145f99

Please sign in to comment.