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

Commit 0d7eda1

Browse files
author
Dushyant Bhalgami
authored
Merge pull request #5 from topcoder-platform/circleci_merge
CI/CD related changes
2 parents 639c8b3 + 8059073 commit 0d7eda1

File tree

5 files changed

+124
-0
lines changed

5 files changed

+124
-0
lines changed

.circleci/config.yml

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
version: 2
2+
defaults: &defaults
3+
docker:
4+
- image: docker:18.06-git
5+
install_dependency: &install_dependency
6+
name: Installation of build and deployment dependencies.
7+
command: |
8+
apk add --no-cache bash
9+
apk add --no-cache jq py-pip sudo
10+
sudo pip install awscli --upgrade
11+
sudo pip install docker-compose
12+
restore_cache_settings_for_build: &restore_cache_settings_for_build
13+
key: docker-node-modules-la-{{ checksum "package-lock.json" }}
14+
15+
save_cache_settings: &save_cache_settings
16+
key: docker-node-modules-la-{{ checksum "package-lock.json" }}
17+
paths:
18+
- node_modules
19+
20+
jobs:
21+
# Build & Deploy against development backend
22+
"build-dev":
23+
<<: *defaults
24+
steps:
25+
- checkout
26+
- setup_remote_docker
27+
- run: *install_dependency
28+
- restore_cache: *restore_cache_settings_for_build
29+
- run: ./build.sh
30+
- save_cache: *save_cache_settings
31+
- deploy:
32+
name: Running MasterScript.
33+
command: |
34+
git clone --branch master https://github.com/topcoder-platform/tc-deploy-scripts ../buildscript
35+
cp ./../buildscript/master_deply_v4.2.sh .
36+
./master_deply_v4.2.sh -d ECS -e DEV -t latest -s leaderboard-api -i leaderboard-api
37+
38+
# Build & Deploy against production backend
39+
"build-prod":
40+
<<: *defaults
41+
steps:
42+
- checkout
43+
- setup_remote_docker
44+
- run: *install_dependency
45+
- restore_cache: *restore_cache_settings_for_build
46+
- run: ./build.sh
47+
- save_cache: *save_cache_settings
48+
- deploy:
49+
name: Running MasterScript.
50+
command: |
51+
git clone --branch master https://github.com/topcoder-platform/tc-deploy-scripts ../buildscript
52+
cp ./../buildscript/master_deply_v4.2.sh .
53+
./master_deply_v4.2.sh -d ECS -e PROD -t latest -s leaderboard-api -i leaderboard-api
54+
55+
workflows:
56+
version: 2
57+
build:
58+
jobs:
59+
# Development builds are executed on "develop" branch only.
60+
- "build-dev":
61+
filters:
62+
branches:
63+
only:
64+
- circleci
65+
- "build-prod":
66+
filters:
67+
branches:
68+
only:
69+
- master

build.sh

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
#!/bin/bash
2+
set -eo pipefail
3+
UPDATE_CACHE=""
4+
docker-compose -f docker/docker-compose.yml build leaderboard-api
5+
docker create --name app leaderboard-api:latest
6+
7+
if [ -d node_modules ]
8+
then
9+
mv package-lock.json old-package-lock.json
10+
docker cp app:/leaderboard-api/package-lock.json package-lock.json
11+
set +eo pipefail
12+
UPDATE_CACHE=$(cmp package-lock.json old-package-lock.json)
13+
set -eo pipefail
14+
else
15+
UPDATE_CACHE=1
16+
fi
17+
18+
if [ "$UPDATE_CACHE" == 1 ]
19+
then
20+
docker cp app:/leaderboard-api/node_modules .
21+
fi

docker/Dockerfile

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# Use the base image with Node.js
2+
FROM node:latest
3+
4+
# Copy the current directory into the Docker image
5+
COPY . /leaderboard-api
6+
# Set working directory for future use
7+
WORKDIR /leaderboard-api
8+
9+
# Install the dependencies from package.json
10+
RUN npm install
11+
CMD npm start

docker/docker-compose.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
version: '3'
2+
services:
3+
leaderboard-api:
4+
image: leaderboard-api:latest
5+
build:
6+
context: ../
7+
dockerfile: docker/Dockerfile
8+
network_mode: "host"
9+

leaderboard-api.json

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"awsdeployvar": {
3+
"AWS_REPOSITORY": "leaderboard-api",
4+
"AWS_ECS_CLUSTER": "leaderboard-processor",
5+
"AWS_ECS_SERVICE": "leaderboard-api-svc",
6+
"AWS_ECS_TASK_FAMILY": "leaderboard-api-def",
7+
"AWS_ECS_CONTAINER_NAME": "leaderboard-api",
8+
"AWS_ECS_PORTS": "0:80:tcp"
9+
},
10+
"app_var": {
11+
"MONGODB_URL": "mongodb://leaderboard:[email protected]:57223/heroku_w1d8wnv8",
12+
"PORT": "80"
13+
}
14+
}

0 commit comments

Comments
 (0)