Skip to content

Commit aab447c

Browse files
authored
Feature/801 update ci license and audit (#38)
* Added npm audit and license scanner to ci * revert changes to standard * fix reloading from dependency cache * fix the cache restore in circle config
1 parent b56b9d7 commit aab447c

5 files changed

Lines changed: 563 additions & 203 deletions

File tree

‎.circleci/config.yml‎

Lines changed: 82 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ defaults_Dependencies: &defaults_Dependencies |
1717
apk --no-cache add ca-certificates
1818
apk --no-cache add curl
1919
apk --no-cache add openssh-client
20+
apk --no-cache add bash
2021
apk add --no-cache -t build-dependencies make gcc g++ python libtool autoconf automake
2122
npm config set unsafe-perm true
2223
npm install -g node-gyp
@@ -31,6 +32,12 @@ defaults_awsCliDependencies: &defaults_awsCliDependencies |
3132
pip install --upgrade awscli==1.14.5 s3cmd==2.0.1 python-magic
3233
apk -v --purge del py-pip
3334

35+
defaults_license_scanner: &defaults_license_scanner
36+
name: Install and set up license-scanner
37+
command: |
38+
git clone https://github.com/mojaloop/license-scanner /tmp/license-scanner
39+
cd /tmp/license-scanner && make build default-files set-up
40+
3441
defaults_Environment: &defaults_environment
3542
name: Set default environment
3643
command: |
@@ -162,7 +169,7 @@ jobs:
162169
name: Delete build dependencies
163170
command: apk del build-dependencies
164171
- save_cache:
165-
key: dependency-cache-{{ checksum "CACHE_VERSION.txt" }}-{{ checksum "package.json" }}
172+
key: dependency-cache-{{ checksum "package.json" }}
166173
paths:
167174
- node_modules
168175

@@ -177,7 +184,7 @@ jobs:
177184
# - run:
178185
# <<: *defaults_environment
179186
# - restore_cache:
180-
# key: dependency-cache-{{ checksum "CACHE_VERSION.txt" }}-{{ checksum "package.json" }}
187+
# key: dependency-cache-{{ checksum "package.json" }}
181188
# - run:
182189
# name: Install tape, tapes and tap-xunit
183190
# command: npm install -g tape tapes tap-xunit
@@ -207,7 +214,7 @@ jobs:
207214
# name: Install AWS CLI dependencies
208215
# command: *defaults_awsCliDependencies
209216
# - restore_cache:
210-
# key: dependency-cache-{{ checksum "CACHE_VERSION.txt" }}-{{ checksum "package.json" }}
217+
# key: dependency-cache-{{ checksum "package.json" }}
211218
# - run:
212219
# name: Execute code coverage check
213220
# command: npm -s run test:coverage-check
@@ -235,7 +242,7 @@ jobs:
235242
# - run:
236243
# <<: *defaults_environment
237244
# - restore_cache:
238-
# key: dependency-cache-{{ checksum "CACHE_VERSION.txt" }}-{{ checksum "package.json" }}
245+
# key: dependency-cache-{{ checksum "package.json" }}
239246
# - run:
240247
# name: Create dir for test results
241248
# command: mkdir -p ./test/results
@@ -324,6 +331,45 @@ jobs:
324331
# - store_test_results:
325332
# path: ./test/results
326333

334+
vulnerability-check:
335+
<<: *defaults_working_directory
336+
<<: *defaults_docker_node
337+
steps:
338+
- run:
339+
name: Install general dependencies
340+
command: *defaults_Dependencies
341+
- checkout
342+
- restore_cache:
343+
key: dependency-cache-{{ checksum "package.json" }}
344+
- run:
345+
name: Create dir for test results
346+
command: mkdir -p ./audit/results
347+
- run:
348+
name: Check for new npm vulnerabilities
349+
command: npm run audit:check -- --json > ./audit/results/auditResults.json
350+
- store_artifacts:
351+
path: ./audit/results
352+
prefix: audit
353+
354+
audit-licenses:
355+
<<: *defaults_working_directory
356+
<<: *defaults_docker_node
357+
steps:
358+
- run:
359+
name: Install general dependencies
360+
command: *defaults_Dependencies
361+
- run:
362+
<<: *defaults_license_scanner
363+
- checkout
364+
- restore_cache:
365+
key: dependency-cache-{{ checksum "package.json" }}
366+
- run:
367+
name: Run the license-scanner
368+
command: cd /tmp/license-scanner && pathToRepo=$CIRCLE_WORKING_DIRECTORY make run
369+
- store_artifacts:
370+
path: /tmp/license-scanner/results
371+
prefix: licenses
372+
327373
build-snapshot:
328374
machine: true
329375
<<: *defaults_working_directory
@@ -358,6 +404,14 @@ jobs:
358404
<<: *defaults_build_docker_login
359405
- run:
360406
<<: *defaults_build_docker_build
407+
- run:
408+
<<: *defaults_license_scanner
409+
- run:
410+
name: Run the license-scanner
411+
command: cd /tmp/license-scanner && mode=docker dockerImage=$DOCKER_ORG/$CIRCLE_PROJECT_REPONAME:$CIRCLE_TAG make run
412+
- store_artifacts:
413+
path: /tmp/license-scanner/results
414+
prefix: licenses
361415
- run:
362416
<<: *defaults_build_docker_publish
363417
- run:
@@ -503,6 +557,28 @@ workflows:
503557
# ignore:
504558
# - /feature*/
505559
# - /bugfix*/
560+
- vulnerability-check:
561+
context: org-global
562+
requires:
563+
- setup
564+
filters:
565+
tags:
566+
only: /.*/
567+
branches:
568+
ignore:
569+
- /feature*/
570+
- /bugfix*/
571+
- audit-licenses:
572+
context: org-global
573+
requires:
574+
- setup
575+
filters:
576+
tags:
577+
only: /.*/
578+
branches:
579+
ignore:
580+
- /feature*/
581+
- /bugfix*/
506582
- build-snapshot:
507583
context: org-global
508584
requires:
@@ -537,6 +613,8 @@ workflows:
537613
# - test-integration
538614
# - test-functional
539615
# - test-spec
616+
- vulnerability-check
617+
- audit-licenses
540618
filters:
541619
tags:
542620
only: /v[0-9]+(\.[0-9]+)*/

‎README.md‎

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,3 +168,20 @@ The scheduler coordinates the Action Object that requires to be dispatched. It w
168168
[Notifier flow](docs/images/6.png)
169169

170170
Email notifier service is a separate app, that observes the same topic for messages with field *from* = `SYSTEM`. Its code is available in the [email-notifier](https://github.com/mojaloop/email-notifier) repository.
171+
172+
173+
## Auditing Dependencies
174+
175+
We use `npm-audit-resolver` along with `npm audit` to check dependencies for vulnerabilities, and keep track of resolved dependencies with an `audit-resolv.json` file.
176+
177+
To start a new resolution process, run:
178+
```bash
179+
npm run audit:resolve
180+
```
181+
182+
You can then check to see if the CI will pass based on the current dependencies with:
183+
```bash
184+
npm run audit:check
185+
```
186+
187+
And commit the changed `audit-resolv.json` to ensure that CircleCI will build correctly.

0 commit comments

Comments
 (0)