diff --git a/.circleci/config.yml b/.circleci/config.yml index 13f2110..7d6f412 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,90 +1,90 @@ version: 2 +defaults: &defaults + docker: + - image: circleci/python:2.7-stretch-browsers +install_dependency: &install_dependency + name: Installation of build and deployment dependencies. + command: | + sudo apt install jq + sudo pip install awscli --upgrade + sudo pip install docker-compose + +install_deploysuite: &install_deploysuite + name: Installation of install_deploysuite. + #Git Clone -change back to v1.3 or latest once counter var is generalized. + command: | + git clone --branch master https://github.com/topcoder-platform/tc-deploy-scripts ../buildscript + cp ./../buildscript/master_deploy.sh . + cp ./../buildscript/buildenv.sh . + cp ./../buildscript/awsconfiguration.sh . + +restore_cache_settings_for_build: &restore_cache_settings_for_build + key: docker-tc-email-service-{{ checksum "package-lock.json" }} + +save_cache_settings: &save_cache_settings + key: docker-tc-email-service-{{ checksum "package-lock.json" }} + paths: + - node_modules + +run_build: &run_build + name: Build of Docker image + command: ./build.sh + jobs: # Build & Deploy against development backend rer "build-dev": - docker: - - image: docker:17.06.1-ce-git + <<: *defaults steps: - # Initialization. - checkout - setup_remote_docker - - run: - name: Installation of build dependencies. - command: apk add --no-cache bash - - # Restoration of node_modules from cache. - - restore_cache: - key: docker-tc-email-service-{{ checksum "package-lock.json" }} - - # Build of Docker image. - - run: - name: Build of Docker image - command: ./build.sh DEV - - # Caching node modules. - - save_cache: - key: docker-tc-email-service-{{ checksum "package-lock.json" }} - paths: - - node_modules - - # Deployment. - - run: - name: Installing AWS client - command: | - apk add --no-cache jq py-pip sudo - sudo pip install awscli --upgrade - + - run: *install_dependency + - run: *install_deploysuite + # - restore_cache: *restore_cache_settings_for_build + - run: *run_build + # - save_cache: *save_cache_settings - deploy: - command: ./deploy.sh DEV $CIRCLE_SHA1 - + name: Running Masterscript - deploy tc-email-service + command: | + ./awsconfiguration.sh DEV + source awsenvconf + ./buildenv.sh -e DEV -b dev-tc-email-service-deployvar + source buildenvvar + ./master_deploy.sh -d ECS -e DEV -t latest -s dev-global-appvar,dev-tc-email-service-appvar -i tc-email-service -p FARGATE + + "build-prod": - docker: - - image: docker:17.06.1-ce-git + <<: *defaults steps: - # Initialization. - checkout - setup_remote_docker - - run: - name: Installation of build dependencies. - command: apk add --no-cache bash - - # Restoration of node_modules from cache. - - restore_cache: - key: docker-tc-email-service-{{ checksum "package-lock.json" }} - - # Build of Docker image. - - run: - name: Build of Docker image - command: ./build.sh PROD - - # Caching node modules. - - save_cache: - key: docker-tc-email-service-{{ checksum "package-lock.json" }} - paths: - - node_modules - - # Deployment. - - run: - name: Installing AWS client - command: | - apk add --no-cache jq py-pip sudo - sudo pip install awscli --upgrade - + - run: *install_dependency + - run: *install_deploysuite + # - restore_cache: *restore_cache_settings_for_build + - run: *run_build + # - save_cache: *save_cache_settings - deploy: - command: ./deploy.sh PROD $CIRCLE_SHA1 + name: Running Masterscript - prod deploy tc-email-service + command: | + ./awsconfiguration.sh PROD + source awsenvconf + ./buildenv.sh -e PROD -b prod-tc-email-service-deployvar + source buildenvvar + ./master_deploy.sh -d ECS -e PROD -t latest -s prod-global-appvar,prod-tc-email-service-appvar -i tc-email-service -p FARGATE + workflows: version: 2 build: jobs: - # Development builds are executed on "dev" branch only. + # Development builds are executed on "develop" branch only. - "build-dev": + context : org-global filters: branches: - only: ["dev"] - # Production builds are executed on "master" branch only. + only: ['dev'] - "build-prod": + context : org-global filters: branches: - only: "master" + only: master diff --git a/build.sh b/build.sh index b275b6e..9a8539f 100755 --- a/build.sh +++ b/build.sh @@ -5,46 +5,46 @@ set -eo pipefail # This script expects a single argument: NODE_ENV, which must be either # "development" or "production". -NODE_ENV=$1 +#NODE_ENV=$1 -ENV=$1 -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_ACCOUNT_ID=$(eval "echo \$${ENV}_AWS_ACCOUNT_ID") -AWS_REPOSITORY=$(eval "echo \$${ENV}_AWS_REPOSITORY") +#ENV=$1 +#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_ACCOUNT_ID=$(eval "echo \$${ENV}_AWS_ACCOUNT_ID") +#AWS_REPOSITORY=$(eval "echo \$${ENV}_AWS_REPOSITORY") #App variables -AUTHDOMAIN=$(eval "echo \$${ENV}_AUTHDOMAIN") -AUTHSECRET=$(eval "echo \$${ENV}_AUTHSECRET") -VALIDISSUERS=$(eval "echo \$${ENV}_VALIDISSUERS") +#AUTHDOMAIN=$(eval "echo \$${ENV}_AUTHDOMAIN") +#AUTHSECRET=$(eval "echo \$${ENV}_AUTHSECRET") +#VALIDISSUERS=$(eval "echo \$${ENV}_VALIDISSUERS") -KAFKA_CLIENT_CERT=$(eval "echo \$${ENV}_KAFKA_CLIENT_CERT") -KAFKA_CLIENT_CERT_KEY=$(eval "echo \$${ENV}_KAFKA_CLIENT_CERT_KEY") -KAFKA_URL=$(eval "echo \$${ENV}_KAFKA_URL") -SENDGRID_API_KEY=$(eval "echo \$${ENV}_SENDGRID_API_KEY") +#KAFKA_CLIENT_CERT=$(eval "echo \$${ENV}_KAFKA_CLIENT_CERT") +#KAFKA_CLIENT_CERT_KEY=$(eval "echo \$${ENV}_KAFKA_CLIENT_CERT_KEY") +#KAFKA_URL=$(eval "echo \$${ENV}_KAFKA_URL") +#SENDGRID_API_KEY=$(eval "echo \$${ENV}_SENDGRID_API_KEY") -DB_DATABASE=$(eval "echo \$${ENV}_DB_DATABASE") -DB_HOST=$(eval "echo \$${ENV}_DB_HOST") -DB_PASSWORD=$(eval "echo \$${ENV}_DB_PASSWORD") -DB_PORT=$(eval "echo \$${ENV}_DB_PORT") -DB_USER=$(eval "echo \$${ENV}_DB_USER") -DATABASE_URL=postgres://$DB_USER:$DB_PASSWORD@$DB_HOST:$DB_PORT/$DB_DATABASE; +#DB_DATABASE=$(eval "echo \$${ENV}_DB_DATABASE") +#DB_HOST=$(eval "echo \$${ENV}_DB_HOST") +#DB_PASSWORD=$(eval "echo \$${ENV}_DB_PASSWORD") +#DB_PORT=$(eval "echo \$${ENV}_DB_PORT") +#DB_USER=$(eval "echo \$${ENV}_DB_USER") +#DATABASE_URL=postgres://$DB_USER:$DB_PASSWORD@$DB_HOST:$DB_PORT/$DB_DATABASE; -KAFKA_GROUP_ID=$(eval "echo \$${ENV}_KAFKA_GROUP_ID") -EMAIL_FROM=$(eval "echo \$${ENV}_EMAIL_FROM") -LOG_LEVEL=$(eval "echo \$${ENV}_LOG_LEVEL") -NODE_ENV=$(eval "echo \$${ENV}_NODE_ENV") -NODE_PORT=$(eval "echo \$${ENV}_NODE_PORT") -JWKSURI=$(eval "echo \$${ENV}_JWKSURI") -TEMPLATE_MAP=$(eval "echo \$${ENV}_TEMPLATE_MAP") +#KAFKA_GROUP_ID=$(eval "echo \$${ENV}_KAFKA_GROUP_ID") +#EMAIL_FROM=$(eval "echo \$${ENV}_EMAIL_FROM") +#LOG_LEVEL=$(eval "echo \$${ENV}_LOG_LEVEL") +#NODE_ENV=$(eval "echo \$${ENV}_NODE_ENV") +#NODE_PORT=$(eval "echo \$${ENV}_NODE_PORT") +#JWKSURI=$(eval "echo \$${ENV}_JWKSURI") +#TEMPLATE_MAP=$(eval "echo \$${ENV}_TEMPLATE_MAP") -TAG=$AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/tc-email-service:$CIRCLE_SHA1 - +#TAG=$AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/tc-email-service:$CIRCLE_SHA1 +TAG="tc-email-service:latest" docker build -t $TAG . # Copies "node_modules" from the created image, if necessary for caching.