diff --git a/.circleci/config.yml b/.circleci/config.yml index 5739249..5e1ec64 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,17 +1,20 @@ version: 2 defaults: &defaults docker: - - image: circleci/python:2.7-stretch-browsers + - image: cimg/python:3.11.0-browsers install_dependency: &install_dependency name: Installation of build and deployment dependencies. command: | + sudo apt update sudo apt install jq - sudo pip install awscli --upgrade + sudo apt install python3-pip + sudo pip3 install awscli --upgrade + sudo pip3 install docker==6.1.3 install_deploysuite: &install_deploysuite name: Installation of install_deploysuite. command: | - git clone --branch v1.4.1 https://github.com/topcoder-platform/tc-deploy-scripts ../buildscript + git clone --branch v1.4.15 https://github.com/topcoder-platform/tc-deploy-scripts ../buildscript cp ./../buildscript/master_deploy.sh . cp ./../buildscript/buildenv.sh . cp ./../buildscript/awsconfiguration.sh . diff --git a/models/Project.js b/models/Project.js index 985d230..d94a36c 100755 --- a/models/Project.js +++ b/models/Project.js @@ -24,9 +24,33 @@ const schema = new Schema({ required: true }, tags: { - type: String, + type: 'list', + list: [{ + type: 'map', + map: { + id: {type: String, required: true}, + name: {type: String, required: true} + } + }], required: true, - default: '' + default: [], + fromDynamo(value) { + if (value.S) { + return value.S; + } + if (value.L) { + return value.L.map((item) => { + if (item.M && item.M.name && item.M.id) { + return { + id: item.M.id.S, + name: item.M.name.S + }; + } + return null; + }); + } + return []; + } }, rocketChatWebhook: {type: String, required: false}, rocketChatChannelName: {type: String, required: false}, diff --git a/routes/webhooks.js b/routes/webhooks.js index ca5cd9b..8295caa 100755 --- a/routes/webhooks.js +++ b/routes/webhooks.js @@ -24,12 +24,12 @@ const router = express.Router(); router.post('/github', SecurityChecker('github'), RepositoryFilter('github'), wrapper(async (req, res) => { const result = GithubEventDetector.detect(req.body); if (!result) { - logger.info('unknown event detected'); - logger.debug(req.body); + logger.info('Unknown Github event detected'); + logger.info(JSON.stringify(req.body)); } else { await kafka.send(JSON.stringify(result)); - logger.info(`successfully add event: ${result.event} to kafka queue`); - logger.debug(`kafka message: ${JSON.stringify(result)}`); + logger.info(`Successfully added Github event: ${result.event} to kafka queue`); + logger.info(`kafka message: ${JSON.stringify(result)}`); } res.json({success: true}); })); @@ -37,12 +37,12 @@ router.post('/github', SecurityChecker('github'), RepositoryFilter('github'), wr router.post('/gitlab', SecurityChecker('gitlab'), RepositoryFilter('gitlab'), wrapper(async (req, res) => { const result = GitlabEventDetector.detect(req.body); if (!result) { - logger.info('unknown event detected'); - logger.debug(req.body); + logger.info('Unknown Gitlab event detected'); + logger.info(JSON.stringify(req.body)); } else { await kafka.send(JSON.stringify(result)); - logger.info(`successfully add event: ${result.event} to kafka queue`); - logger.debug(`kafka message: ${JSON.stringify(result)}`); + logger.info(`Successfully added Gitlab event: ${result.event} to kafka queue`); + logger.info(`kafka message: ${JSON.stringify(result)}`); } res.json({success: true}); })); diff --git a/utils/EventDetector.js b/utils/EventDetector.js index 7abb269..dc09622 100755 --- a/utils/EventDetector.js +++ b/utils/EventDetector.js @@ -11,6 +11,7 @@ const Joi = require('joi'); const _ = require('lodash'); +const logger = require('../utils/logger'); class EventDetector { @@ -35,12 +36,14 @@ class EventDetector { _.forEach(this.events, (e) => { let result = Joi.validate(data, e.schema, {stripUnknown: true}); if (result.error) { + logger.info(`Joi validate: ${JSON.stringify(result.error)}`); return; } const obj = e.parse(data); // validate result = Joi.attempt(obj, e.event.schema); if (result.error) { + logger.info(`Joi schema attempt error: ${JSON.stringify(result.error)}`); throw result.error; } // done