From 3df4d11c40de9caec416d2f543dc0669cbec02a8 Mon Sep 17 00:00:00 2001 From: Dominik Sigmund <dominik.sigmund@br.de> Date: Wed, 19 Feb 2020 11:26:01 +0100 Subject: [PATCH] Added sonarqube check --- .gitlab-ci.yml | 6 ++++++ README.md | 24 ++++++++++++++++-------- index.js | 28 ++++++++++++++++++++++++++++ package-lock.json | 5 +++++ package.json | 4 +++- 5 files changed, 58 insertions(+), 9 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c2b92b1..adbb7bc 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,6 +5,12 @@ include: file: '/cicd/SAST-nodejs.gitlab-ci.yml' - project: 'general/templates' file: '/cicd/npm-audit.gitlab-ci.yml' + - project: 'general/templates' + file: '/cicd/sonarqube.gitlab-ci.yml' + +variables: + SONAR_PROJECT_KEY: config + SONAR_TOKEN: 11922a8e774494f51e1d2f0e695949e4073e7df8 cache: paths: diff --git a/README.md b/README.md index 0f52d9b..31d758b 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,29 @@ # config +[](https://it-devops-01.br-edv.brnet.int/general/config/commits/master) +[](https://it-devops-01.br-edv.brnet.int/general/config/commits/master) + Simple Config Log with HashiCorp Vault support. ## Installation +`npm install --save git+ssh://git@it-devops-01.br-edv.brnet.int:general/config.git` + ## Usage +`let config = require('config')` -## TODO +Then config is your config object. (Use it like config.setting) -sonarqube +It reads from the following sources, performing a deep merge: +(The Top Value overwrites the lower ones) -badges +- ENV +- config.json +- config.defaults.json -bottom overwrites top -config.defaults.json -config.json -process.ENV +## TODO / Missing -if value == "vault:", treat it as secret \ No newline at end of file +- hashicorp values support: if value == "vault:", treat it as secret +- sonarqube + badges +- tests diff --git a/index.js b/index.js index e69de29..1878007 100644 --- a/index.js +++ b/index.js @@ -0,0 +1,28 @@ +var fs = require('fs') +var merge = require('lodash.merge') + +let config = {} + +if (fs.accessSync('./config.defaults.json')) { + config = JSON.parse(fs.readFileSync('./config.defaults.json', 'utf8')) +} + +if (fs.accessSync('./config.json')) { + config = merge(config, JSON.parse(fs.readFileSync('./config.json', 'utf8'))) +} + +iterate(config) + +module.exports = config + +const iterate = function (obj) { + for (let index = 0; index < Object.keys(obj).length; index++) { + const element = Object.keys(obj)[index] + if (process.env[element]) { + obj[element] = process.env[element] + } + if (typeof element === 'object') { + iterate(element) + } + } +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 2d7570a..27e70f5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2758,6 +2758,11 @@ "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", "dev": true }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + }, "lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", diff --git a/package.json b/package.json index 775da5c..ef1bc2b 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,8 @@ "description": "Simple Config Log with HashiCorp Vault support", "main": "index.js", "scripts": { - "test": "jest" + "test": "jest", + "sonarqube": "sonar-scanner -Dsonar.projectKey=config -Dsonar.sources=. -Dsonar.host.url=https://it-devops-01.br-edv.brnet.int:8999 -Dsonar.login=gitlab" }, "keywords": [ "config", @@ -14,6 +15,7 @@ "author": "Dominik Sigmund", "license": "ISC", "dependencies": { + "lodash.merge": "^4.6.2", "vault": "^0.3.0" }, "devDependencies": { -- GitLab