Skip to content
This repository was archived by the owner on Mar 13, 2025. It is now read-only.

CI/CD related changes #5

Merged
merged 1 commit into from
Nov 12, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
CI/CD related changes
  • Loading branch information
Dushyant committed Nov 12, 2018
commit 8059073af3c15ead08a346fa91995ba3952353ff
69 changes: 69 additions & 0 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
version: 2
defaults: &defaults
docker:
- image: docker:18.06-git
install_dependency: &install_dependency
name: Installation of build and deployment dependencies.
command: |
apk add --no-cache bash
apk add --no-cache jq py-pip sudo
sudo pip install awscli --upgrade
sudo pip install docker-compose
restore_cache_settings_for_build: &restore_cache_settings_for_build
key: docker-node-modules-la-{{ checksum "package-lock.json" }}

save_cache_settings: &save_cache_settings
key: docker-node-modules-la-{{ checksum "package-lock.json" }}
paths:
- node_modules

jobs:
# Build & Deploy against development backend
"build-dev":
<<: *defaults
steps:
- checkout
- setup_remote_docker
- run: *install_dependency
- restore_cache: *restore_cache_settings_for_build
- run: ./build.sh
- save_cache: *save_cache_settings
- deploy:
name: Running MasterScript.
command: |
git clone --branch master https://github.com/topcoder-platform/tc-deploy-scripts ../buildscript
cp ./../buildscript/master_deply_v4.2.sh .
./master_deply_v4.2.sh -d ECS -e DEV -t latest -s leaderboard-api -i leaderboard-api

# Build & Deploy against production backend
"build-prod":
<<: *defaults
steps:
- checkout
- setup_remote_docker
- run: *install_dependency
- restore_cache: *restore_cache_settings_for_build
- run: ./build.sh
- save_cache: *save_cache_settings
- deploy:
name: Running MasterScript.
command: |
git clone --branch master https://github.com/topcoder-platform/tc-deploy-scripts ../buildscript
cp ./../buildscript/master_deply_v4.2.sh .
./master_deply_v4.2.sh -d ECS -e PROD -t latest -s leaderboard-api -i leaderboard-api

workflows:
version: 2
build:
jobs:
# Development builds are executed on "develop" branch only.
- "build-dev":
filters:
branches:
only:
- circleci
- "build-prod":
filters:
branches:
only:
- master
21 changes: 21 additions & 0 deletions build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#!/bin/bash
set -eo pipefail
UPDATE_CACHE=""
docker-compose -f docker/docker-compose.yml build leaderboard-api
docker create --name app leaderboard-api:latest

if [ -d node_modules ]
then
mv package-lock.json old-package-lock.json
docker cp app:/leaderboard-api/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:/leaderboard-api/node_modules .
fi
11 changes: 11 additions & 0 deletions docker/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Use the base image with Node.js
FROM node:latest

# Copy the current directory into the Docker image
COPY . /leaderboard-api
# Set working directory for future use
WORKDIR /leaderboard-api

# Install the dependencies from package.json
RUN npm install
CMD npm start
9 changes: 9 additions & 0 deletions docker/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
version: '3'
services:
leaderboard-api:
image: leaderboard-api:latest
build:
context: ../
dockerfile: docker/Dockerfile
network_mode: "host"

14 changes: 14 additions & 0 deletions leaderboard-api.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"awsdeployvar": {
"AWS_REPOSITORY": "leaderboard-api",
"AWS_ECS_CLUSTER": "leaderboard-processor",
"AWS_ECS_SERVICE": "leaderboard-api-svc",
"AWS_ECS_TASK_FAMILY": "leaderboard-api-def",
"AWS_ECS_CONTAINER_NAME": "leaderboard-api",
"AWS_ECS_PORTS": "0:80:tcp"
},
"app_var": {
"MONGODB_URL": "mongodb://leaderboard:[email protected]:57223/heroku_w1d8wnv8",
"PORT": "80"
}
}