Commit 41471d9a authored by Pierre Smeyers's avatar Pierre Smeyers
Browse files

Merge branch 'add-npm-outdated' into 'master'

Add npm outdated job

See merge request to-be-continuous/node!12
parents 110875c4 3c6c2610
Loading
Loading
Loading
Loading
+21 −0
Original line number Diff line number Diff line
@@ -253,6 +253,27 @@ npm install --save-dev npm-audit-html
| `NODE_AUDIT_JSON_PATH`| NPM [audit](https://docs.npmjs.com/cli/audit) JSON report path | `reports/npm-audit-report.json` |
| `NODE_AUDIT_HTML_ARGS`| NPM [audit HTML](https://www.npmjs.com/package/npm-audit-html) report generation arguments | `--output reports/npm-audit-report.html` |

### `node-npm-outdated` job

The Node template features a job `node-npm-outdated` that performs [npm outdated](https://docs.npmjs.com/cli/outdated) to find dependencies that might be updated.

It is bound to the `test` stage.

By default `npm outdated` provide a long json report. For readability, `npm-outdated-html` is used to generate an HTML report.

Add the package as a development dependency:

```shell
npm install --save-dev npm-outdated-html
```

| Name                      | description                                                                                      | default value                               |
|---------------------------|--------------------------------------------------------------------------------------------------|---------------------------------------------|
| `NODE_OUTDATED_DISABLED`  | Set to `true` to disable npm outdated                                                            | _none_ (enabled)                            |
| `NODE_OUTDATED_ARGS`      | NPM [outdated](https://docs.npmjs.com/cli/outdated) arguments                                    | `--long`                                          |
| `NODE_OUTDATED_JSON_PATH` | NPM [outdated](https://docs.npmjs.com/cli/outdated) JSON report path                             | `reports/npm-outdated-report.json`          |
| `NODE_OUTDATED_HTML_ARGS` | NPM [outdated HTML](https://www.npmjs.com/package/npm-outdated-html) report generation arguments | `--output reports/npm-outdated-report.html` |

### `node-js-scan` job

This jobs is **disabled by default** and performs a [njsscan](https://github.com/ajinabraham/njsscan) (Static Security Code Scanner) analysis.
+25 −0
Original line number Diff line number Diff line
@@ -98,6 +98,31 @@
        }
      ]
    },
    {
      "id": "npm-outdated",
      "name": "npm outdated",
      "description": "npm outdated analysis",
      "disable_with": "NODE_OUTDATED_DISABLED",
      "variables": [
        {
          "name": "NODE_OUTDATED_ARGS",
          "description": "NPM [outdated](https://docs.npmjs.com/cli/outdated) arguments",
          "default": "--long"
        },
        {
          "name": "NODE_OUTDATED_JSON_PATH",
          "description": "NPM [outdated](https://docs.npmjs.com/cli/outdated) JSON report path",
          "default": "reports/npm-outdated-report.json",
          "advanced": true
        },
        {
          "name": "NODE_OUTDATED_HTML_ARGS",
          "description": "NPM [outdated HTML](https://www.npmjs.com/package/npm-outdated-html) report generation arguments",
          "default": "--output reports/npm-outdated-report.html",
          "advanced": true
        }
      ]
    },
    {
      "id": "njsscan",
      "name": "njsscan",
+31 −0
Original line number Diff line number Diff line
@@ -44,6 +44,11 @@ variables:
  NODE_AUDIT_HTML_ARGS: "--output reports/npm-audit-report.html"
  NODE_AUDIT_JSON_PATH: "reports/npm-audit-report.json"

  # NPM outdated
  NODE_OUTDATED_ARGS: "--long"
  NODE_OUTDATED_HTML_ARGS: "--output reports/npm-outdated-report.html"
  NODE_OUTDATED_JSON_PATH: "reports/npm-outdated-report.json"

  # default production ref name (pattern)
  PROD_REF: '/^(master|main)$/'
  # default integration ref name (pattern)
@@ -365,3 +370,29 @@ node-npm-audit:
    # on non-production, non-integration branches: manual & non-blocking
    - when: manual
      allow_failure: true

node-npm-outdated:
  extends: .node-base
  stage: test
  script:
    - mkdir -p reports
    - npm outdated --json $NODE_OUTDATED_ARGS | tee $NODE_OUTDATED_JSON_PATH | npx npm-outdated-html $NODE_OUTDATED_HTML_ARGS
  artifacts:
    name: "$CI_JOB_NAME artifacts from $CI_PROJECT_NAME on $CI_COMMIT_REF_SLUG"
    expire_in: 1 day
    when: always
    paths:
      - $NODE_PROJECT_DIR/reports/
  rules:
    # exclude merge requests
    - if: $CI_MERGE_REQUEST_ID
      when: never
    # exclude if $NODE_OUTDATED_DISABLED set
    - if: $NODE_OUTDATED_DISABLED
      when: never
    # on production or integration branch(es): auto & non-blocking
    - if: '$CI_COMMIT_REF_NAME =~ $PROD_REF || $CI_COMMIT_REF_NAME =~ $INTEG_REF'
      allow_failure: true
    # on non-production, non-integration branches: manual & non-blocking
    - when: manual
      allow_failure: true