The cert gen service is a lambda which is used to marshall data before cert gen service task generates the test certificates when tests are submitted.
The project runs on node >10 with typescript and serverless framework. For further details about project dependencies, please refer to the package.json
file.
nvm is used to managed node versions and configuration explicitly done per project using an .npmrc
file.
Please install and run the following securiy programs as part of your development process:
- git-secrets
After installing, do a one-time set up with
git secrets --register-aws
. Run withgit secrets --scan
.
These will be run as part of your projects hooks so you don't accidentally introduce any new security vulnerabilities.
You will also require Docker to run the service locally if you wish to mock external dependencies.
More information about technical designs can be found under the cert gen section.
Set up your nodejs environment running nvm use
and once the dependencies are installed using npm i
, you can run the scripts from package.json
to build your project.
This code repository uses serverless framework to mock AWS capabilities for local development.
- The
BRANCH
environment variable indicates in which environment is this application running. Not setting this variable will result in defaulting tolocal
.
- Building without source maps -
npm run build
- Building with source maps -
npm run build:dev
- Building the docker containers -
npm run build:docker
The app can be started by running npm run start:docker
.
The configuration file can be found under src/config/config.yml
.
Environment variable injection is possible with the syntax:
${BRANCH}
, or you can specify a default value: ${BRANCH:local}
.
SQS contains configuration for the local environment or the AWS environment. Locally, you need to provide the localhost
region and the SQS endpoint, which in this case is the address of a docker image. apiVersion
and queueName
need to be provided for both environments.
sqs:
local:
params:
region: localhost
endpoint: http://sqs:9324
apiVersion: "2012-11-05"
queueName: cert-gen-q
remote:
params:
apiVersion: "2012-11-05"
queueName: cert-gen-q
The following environmental variables can be given to your serverless scripts to trace and debug your service:
AWS_XRAY_CONTEXT_MISSING = LOG_ERROR
SLS_DEBUG = *
BRANCH = local
In order to test, you need to run the following:
npm run test # unit tests
We follow a gitflow approach for development. For the CI/CD and automation please refer to the following pages for further details:
Please familiarise yourself with commitlint and conventional commits conventions as a hook is in place to enforce standards.
The projects has multiple hooks configured using husky which will execute the following scripts: security-checks
, audit
, tslint
, prepush
.
The codebase uses typescript clean code standards as well as sonarqube for static analysis.
SonarQube is available locally, please follow the instructions below if you wish to run the service locally (brew is the preferred approach).
Brew (recommended):
- Install sonarqube using brew
- Change
sonar.host.url
to point to localhost, by default, sonar runs onhttp://localhost:9000
- run the sonar server
sonar start
, then perform your analysisnpm run sonar-scanner
Manual:
- Download sonarqube
- Add sonar-scanner in environment variables in your profile file add the line:
export PATH=<PATH_TO_SONAR_SCANNER>/sonar-scanner-3.3.0.1492-macosx/bin:$PATH
- Start the SonarQube server:
cd <PATH_TO_SONARQUBE_SERVER>/bin/macosx-universal-64 ./sonar.sh start
- In the microservice folder run the command:
npm run sonar-scanner