From 5df0972bc0ae380fe0dc0074a2bacca7e410e2c4 Mon Sep 17 00:00:00 2001 From: Gunasekar-K Date: Tue, 4 Jun 2019 17:32:18 +0530 Subject: [PATCH 1/3] circleci integration with docker --- .circleci/config.yml | 78 +++++++++++++++++++++++++++++++++++++++ build.sh | 22 +++++++++++ docker/Dockerfile | 15 ++++++++ docker/docker-compose.yml | 7 ++++ 4 files changed, 122 insertions(+) create mode 100644 .circleci/config.yml create mode 100755 build.sh create mode 100644 docker/Dockerfile create mode 100644 docker/docker-compose.yml diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 0000000..4ed5a5f --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,78 @@ +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. + 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 . +restore_cache_settings_for_build: &restore_cache_settings_for_build + key: docker-node-modules-{{ checksum "package-lock.json" }} + +save_cache_settings: &save_cache_settings + key: docker-node-modules-{{ checksum "package-lock.json" }} + paths: + - node_modules + +builddeploy_steps: &builddeploy_steps + - checkout + - setup_remote_docker + - run: *install_dependency + - run: *install_deploysuite + - restore_cache: *restore_cache_settings_for_build + - run: ./build.sh + - save_cache: *save_cache_settings + - deploy: + name: Running MasterScript. + command: | + ./awsconfiguration.sh $DEPLOY_ENV + source awsenvconf + ./buildenv.sh -e $DEPLOY_ENV -b ${DEPLOY_ENV}-${APPNAME}-deployvar + source buildenvvar + ./master_deploy.sh -d ECS -e $DEPLOY_ENV -t latest -s ${DEPLOY_ENV}-global-appvar,${DEPLOY_ENV}-${APPNAME}-appvar -i ${APPNAME} + + +jobs: + # Build & Deploy against development backend + "build-dev": + <<: *defaults + environment: + DEPLOY_ENV: "dev" + APPNAME: "topcoder-x-processor" + steps: *builddeploy_steps + + "build-prod": + <<: *defaults + environment: + DEPLOY_ENV: "prod" + APPNAME: "topcoder-x-processor" + steps: *builddeploy_steps + +workflows: + version: 2 + build: + jobs: + # Development builds are executed on "develop" branch only. + - "build-dev": + context : org-global + filters: + branches: + only: + - develop-circleci + + # Production builds are exectuted only on tagged commits to the + # master branch. + - "build-prod": + context : org-global + filters: + branches: + only: master \ No newline at end of file diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..e91565b --- /dev/null +++ b/build.sh @@ -0,0 +1,22 @@ +#!/bin/bash +set -eo pipefail +APP_NAME="topcoder-x-processor" +UPDATE_CACHE="" +docker-compose -f docker/docker-compose.yml build $APP_NAME +docker create --name app $APP_NAME:latest + +if [ -d node_modules ] +then + mv package-lock.json old-package-lock.json + docker cp app:/$APP_NAME/package-lock.json package-lock.json + set +eo pipefail + UPDATE_CACHE=$(cmp package-lock.json old-package-lock.json) + set -eo pipefail +else + UPDATE_CACHE=1 +fi + +if [ "$UPDATE_CACHE" == 1 ] +then + docker cp app:/$APP_NAME/node_modules . +fi \ No newline at end of file diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 0000000..5f9205f --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,15 @@ +# Use the base image with Node.js +FROM node:8.12 + +# Copy the current directory into the Docker image +COPY . /topcoder-x-processor + +# Set working directory for future use +WORKDIR /topcoder-x-processor + +# Install the dependencies from package.json +RUN npm install +#RUN npm run build +RUN npm run test + +CMD npm start \ No newline at end of file diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml new file mode 100644 index 0000000..e23de33 --- /dev/null +++ b/docker/docker-compose.yml @@ -0,0 +1,7 @@ +version: '3' +services: + topcoder-x-processor: + image: topcoder-x-processor:latest + build: + context: ../ + dockerfile: docker/Dockerfile From b52a0b7c89e7d9e37a6009cef208eb96c06cff68 Mon Sep 17 00:00:00 2001 From: Gunasekar-K Date: Tue, 4 Jun 2019 17:40:20 +0530 Subject: [PATCH 2/3] circleci integration with docker --- docker/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 5f9205f..29eb298 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -10,6 +10,6 @@ WORKDIR /topcoder-x-processor # Install the dependencies from package.json RUN npm install #RUN npm run build -RUN npm run test +#RUN npm run test CMD npm start \ No newline at end of file From 661fa613810c1093a9a6443aa37f5cedeaf730e6 Mon Sep 17 00:00:00 2001 From: Gunasekar-K Date: Fri, 27 Sep 2019 19:31:07 +0530 Subject: [PATCH 3/3] version change --- .circleci/config.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 4ed5a5f..59f2db2 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -11,7 +11,7 @@ install_dependency: &install_dependency install_deploysuite: &install_deploysuite name: Installation of install_deploysuite. command: | - git clone --branch v1.3 https://github.com/topcoder-platform/tc-deploy-scripts ../buildscript + git clone --branch v1.4.1 https://github.com/topcoder-platform/tc-deploy-scripts ../buildscript cp ./../buildscript/master_deploy.sh . cp ./../buildscript/buildenv.sh . cp ./../buildscript/awsconfiguration.sh . @@ -67,7 +67,7 @@ workflows: filters: branches: only: - - develop-circleci + - develop # Production builds are exectuted only on tagged commits to the # master branch.