Skip to content

Commit dd80985

Browse files
Merge pull request #98 from topcoder-platform/dev_msstsv1.3
Merge into Dev from dev_msmstsv1.3 branch
2 parents 96374c8 + 000d823 commit dd80985

File tree

6 files changed

+97
-76
lines changed

6 files changed

+97
-76
lines changed

.circleci/config.yml

Lines changed: 66 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -1,89 +1,93 @@
1-
version: 2
21

3-
jobs:
4-
# Build & Deploy against development backend rer
5-
"build-dev":
2+
version: 2
3+
defaults: &defaults
64
docker:
75
- image: docker:17.06.1-ce-git
8-
steps:
9-
# Initialization.
10-
- checkout
11-
- setup_remote_docker
12-
- run:
13-
name: Installation of build dependencies.
14-
command: apk add --no-cache bash
6+
install_dependency: &install_dependency
7+
name: Installation of build and deployment dependencies.
8+
command: |
9+
apk update
10+
apk add --no-cache bash curl
11+
apk upgrade
12+
apk add --no-cache jq py-pip sudo
13+
sudo pip install awscli --upgrade
14+
install_deploysuite: &install_deploysuite
15+
name: Installation of install_deploysuite.
16+
command: |
17+
git clone --branch master https://github.com/topcoder-platform/tc-deploy-scripts ../buildscript
18+
cp ./../buildscript/master_deploy.sh .
19+
cp ./../buildscript/buildenv.sh .
20+
cp ./../buildscript/awsconfiguration.sh .
21+
22+
restore_cache_settings_for_build: &restore_cache_settings_for_build
23+
key: docker-tc-notify-{{ checksum "package-lock.json" }}
1524

16-
# Restoration of node_modules from cache.
17-
- restore_cache:
18-
key: docker-tc-notify-{{ checksum "package-lock.json" }}
25+
save_cache_settings: &save_cache_settings
26+
key: docker-tc-notify-{{ checksum "package-lock.json" }}
27+
paths:
28+
- node_modules
1929

20-
# Build of Docker image.
21-
- run:
30+
run_build: &run_build
2231
name: Build of Docker image
23-
command: ./build.sh DEV
32+
command: ./build.sh
2433

25-
# Caching node modules.
26-
- save_cache:
27-
key: docker-tc-notify-{{ checksum "package-lock.json" }}
28-
paths:
29-
- node_modules
30-
31-
# Deployment.
32-
- run:
33-
name: Installing AWS client
34-
command: |
35-
apk add --no-cache jq py-pip sudo
36-
sudo pip install awscli --upgrade
3734

35+
jobs:
36+
# Build & Deploy against development backend rer
37+
"build-dev":
38+
<<: *defaults
39+
steps:
40+
- checkout
41+
- setup_remote_docker
42+
- run: *install_dependency
43+
- run: *install_deploysuite
44+
- restore_cache: *restore_cache_settings_for_build
45+
- run: *run_build
46+
- save_cache: *save_cache_settings
3847
- deploy:
39-
command: ./deploy.sh DEV $CIRCLE_SHA1
48+
name: Running Masterscript - deploy tc-notifications-api service
49+
command: |
50+
./awsconfiguration.sh DEV
51+
source awsenvconf
52+
./buildenv.sh -e DEV -b dev-tc-notifications-deployvar
53+
source buildenvvar
54+
./master_deploy.sh -d ECS -e DEV -t latest -s dev-global-appvar,dev-tc-notifications-appvar -i tc-notifications
55+
echo "Running Masterscript - deploy tc-notifications-consumers service"
56+
if [ -e dev-tc-notifications-deployvar.json ]; then sudo rm -vf dev-tc-notifications-deployvar.json; fi
57+
./buildenv.sh -e DEV -b dev-tc-notifications-consumers-deployvar
58+
source buildenvvar
59+
./master_deploy.sh -d ECS -e DEV -t latest -s dev-global-appvar,dev-tc-notifications-appvar -i tc-notifications
4060
4161
"build-prod":
42-
docker:
43-
- image: docker:17.06.1-ce-git
62+
<<: *defaults
4463
steps:
45-
# Initialization.
4664
- checkout
4765
- setup_remote_docker
48-
- run:
49-
name: Installation of build dependencies.
50-
command: apk add --no-cache bash
51-
52-
# Restoration of node_modules from cache.
53-
- restore_cache:
54-
key: docker-tc-notify-{{ checksum "package-lock.json" }}
55-
56-
# Build of Docker image.
57-
- run:
58-
name: Build of Docker image
59-
command: ./build.sh PROD
60-
61-
# Caching node modules.
62-
- save_cache:
63-
key: docker-tc-notify-{{ checksum "package-lock.json" }}
64-
paths:
65-
- node_modules
66-
67-
# Deployment.
68-
- run:
69-
name: Installing AWS client
70-
command: |
71-
apk add --no-cache jq py-pip sudo
72-
sudo pip install awscli --upgrade
73-
66+
- run: *install_dependency
67+
- run: *install_deploysuite
68+
- restore_cache: *restore_cache_settings_for_build
69+
- run: *run_build
70+
- save_cache: *save_cache_settings
7471
- deploy:
75-
command: ./deploy.sh PROD $CIRCLE_SHA1
76-
72+
command: |
73+
./awsconfiguration.sh PROD
74+
source awsenvconf
75+
./buildenv.sh -e PROD -b prod-tc-notifications-deployvar
76+
source buildenvvar
77+
./master_deploy.sh -d ECS -e PROD -t latest -s prod-global-appvar,prod-tc-notifications-appvar -i tc-notifications
78+
7779
workflows:
7880
version: 2
7981
build:
8082
jobs:
8183
# Development builds are executed on "develop" branch only.
8284
- "build-dev":
85+
context : org-global
8386
filters:
8487
branches:
85-
only: [dev]
88+
only: ['dev', 'dev_msstsv1.3']
8689
- "build-prod":
90+
context : org-global
8791
filters:
8892
branches:
8993
only: master

Dockerfile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,5 @@ COPY . .
1010
RUN npm install
1111
RUN npm install dotenv --save
1212
RUN npm test
13-
CMD ["npm", "start"]
13+
ENTRYPOINT ["npm","run"]
14+
#CMD ["npm", "start"]

build.sh

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,17 @@ set -eo pipefail
55
# This script expects a single argument: NODE_ENV, which must be either
66
# "development" or "production".
77

8-
NODE_ENV=$1
8+
# NODE_ENV=$1
99

10-
ENV=$1
11-
AWS_REGION=$(eval "echo \$${ENV}_AWS_REGION")
12-
AWS_ACCESS_KEY_ID=$(eval "echo \$${ENV}_AWS_ACCESS_KEY_ID")
13-
AWS_SECRET_ACCESS_KEY=$(eval "echo \$${ENV}_AWS_SECRET_ACCESS_KEY")
14-
AWS_ACCOUNT_ID=$(eval "echo \$${ENV}_AWS_ACCOUNT_ID")
15-
AWS_REPOSITORY=$(eval "echo \$${ENV}_AWS_REPOSITORY")
16-
17-
TAG=$AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/tc-notifications:$CIRCLE_SHA1
10+
#ENV=$1
11+
#AWS_REGION=$(eval "echo \$${ENV}_AWS_REGION")
12+
#AWS_ACCESS_KEY_ID=$(eval "echo \$${ENV}_AWS_ACCESS_KEY_ID")
13+
#AWS_SECRET_ACCESS_KEY=$(eval "echo \$${ENV}_AWS_SECRET_ACCESS_KEY")
14+
#AWS_ACCOUNT_ID=$(eval "echo \$${ENV}_AWS_ACCOUNT_ID")
15+
#AWS_REPOSITORY=$(eval "echo \$${ENV}_AWS_REPOSITORY")
1816

17+
#TAG=$AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/tc-notifications:$CIRCLE_SHA1
18+
TAG="tc-notifications:latest"
1919
docker build -t $TAG .
2020

2121
# Copies "node_modules" from the created image, if necessary for caching.

config/default.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ module.exports = {
1818
},
1919

2020
AUTH_SECRET: process.env.authSecret,
21-
VALID_ISSUERS: process.env.validIssuers ? process.env.validIssuers.replace(/\\"/g, '') : null,
21+
VALID_ISSUERS: process.env.VALID_ISSUERS ? process.env.VALID_ISSUERS.replace(/\\"/g, '') : null,
2222
// keep it here for dev purposes, it's only needed by modified version of tc-core-library-js
2323
// which skips token validation when locally deployed
2424

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,8 @@
5252
"sequelize": "^4.21.0",
5353
"superagent": "^3.8.0",
5454
"tc-core-library-js": "appirio-tech/tc-core-library-js.git#v2.6",
55-
"winston": "^2.2.0"
55+
"winston": "^2.2.0",
56+
"topcoder-healthcheck-dropin": "^1.0.3"
5657
},
5758
"engines": {
5859
"node": "6.x"

src/app.js

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ const logger = require('./common/logger');
1515
const errors = require('./common/errors');
1616
const models = require('./models');
1717
const Kafka = require('no-kafka');
18+
const healthcheck = require('topcoder-healthcheck-dropin')
1819

1920
/**
2021
* Start Kafka consumer for event bus events.
@@ -74,11 +75,25 @@ function startKafkaConsumer(handlers, notificationServiceHandlers) {
7475
});
7576
});
7677

78+
const check = function () {
79+
if (!consumer.client.initialBrokers && !consumer.client.initialBrokers.length) {
80+
return false
81+
}
82+
let connected = true
83+
consumer.client.initialBrokers.forEach(conn => {
84+
logger.debug(`url ${conn.server()} - connected=${conn.connected}`)
85+
connected = conn.connected & connected
86+
})
87+
return connected
88+
}
7789

7890
consumer
7991
.init()
80-
.then(() => _.each(_.keys(handlers),
81-
(topicName) => consumer.subscribe(topicName, dataHandler)))
92+
.then(() => {
93+
_.each(_.keys(handlers),
94+
(topicName) => consumer.subscribe(topicName, dataHandler))
95+
healthcheck.init([check])
96+
})
8297
.catch((err) => {
8398
logger.error('Kafka Consumer failed');
8499
logger.error(err);

0 commit comments

Comments
 (0)