From 8dddb675aa25e874f77615ed511be575a909f477 Mon Sep 17 00:00:00 2001 From: Rowan Manning <138944+rowanmanning@users.noreply.github.com> Date: Wed, 21 Aug 2024 13:20:50 +0100 Subject: [PATCH] Remove the Node.js version healthcheck There's no need for this to be an operational alert. This is covered well by several Problem Hub problems and I prefer the code we don't have to maintain. --- package-lock.json | 13 ++-- package.json | 3 +- src/lib/health-checks.js | 4 +- src/lib/supported-node-js-version-check.js | 51 --------------- .../supported-node-js-version-check.test.js | 65 ------------------- 5 files changed, 11 insertions(+), 125 deletions(-) delete mode 100644 src/lib/supported-node-js-version-check.js delete mode 100644 test/app/supported-node-js-version-check.test.js diff --git a/package-lock.json b/package-lock.json index 5241848a..b3720bc3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,8 +16,7 @@ "express": "^4.17.3", "isomorphic-fetch": "^3.0.0", "n-health": "^13.0.0", - "next-metrics": "^12.15.0", - "semver": "^7.3.7" + "next-metrics": "^12.15.0" }, "bin": { "n-express-generate-certificate": "bin/n-express-generate-certificate.sh" @@ -7434,6 +7433,7 @@ "version": "7.3.7", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, "dependencies": { "lru-cache": "^6.0.0" }, @@ -7467,6 +7467,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -7477,7 +7478,8 @@ "node_modules/semver/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/send": { "version": "0.18.0", @@ -14274,6 +14276,7 @@ "version": "7.3.7", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, "requires": { "lru-cache": "^6.0.0" }, @@ -14282,6 +14285,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, "requires": { "yallist": "^4.0.0" } @@ -14289,7 +14293,8 @@ "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true } } }, diff --git a/package.json b/package.json index faa18083..36686c64 100644 --- a/package.json +++ b/package.json @@ -19,8 +19,7 @@ "express": "^4.17.3", "isomorphic-fetch": "^3.0.0", "n-health": "^13.0.0", - "next-metrics": "^12.15.0", - "semver": "^7.3.7" + "next-metrics": "^12.15.0" }, "devDependencies": { "@dotcom-tool-kit/component": "^4.0.4", diff --git a/src/lib/health-checks.js b/src/lib/health-checks.js index f67cf2e6..0c619ae8 100644 --- a/src/lib/health-checks.js +++ b/src/lib/health-checks.js @@ -8,7 +8,6 @@ const logger = require('@dotcom-reliability-kit/logger'); const metricsHealthCheck = require('./metrics-healthcheck'); -const supportedNodeJsVersionCheck = require('./supported-node-js-version-check'); /** * @param {ExpressApp} app @@ -32,8 +31,7 @@ module.exports = (app, options, meta) => { /** @type {Healthcheck[]} */ const defaultChecks = [ ...tickingMetricChecks, - metricsHealthCheck(meta.name), - supportedNodeJsVersionCheck(meta.name) + metricsHealthCheck(meta.name) ]; /** @type {Healthcheck[]} */ diff --git a/src/lib/supported-node-js-version-check.js b/src/lib/supported-node-js-version-check.js deleted file mode 100644 index bf863e62..00000000 --- a/src/lib/supported-node-js-version-check.js +++ /dev/null @@ -1,51 +0,0 @@ -const semver = require('semver'); - -// Ref. https://nodejs.org/en/about/releases - -/** - * @type {Object.} - */ -const nodeVersionToEndOfLifeDateMap = { - '12': new Date('2022-04-30'), - '14': new Date('2023-04-30'), - '16': new Date('2023-09-11'), - '18': new Date('2025-04-30'), - '20': new Date('2026-04-30'), - '22': new Date('2027-04-30') -}; - -/** - * @param {string} appName - * @returns {import("../../typings/metrics").Healthcheck} - */ -module.exports = (appName) => { - const lastUpdated = new Date(); - - const currentDate = new Date(); - - const region = process.env.REGION === 'US' ? 'us' : 'eu'; - - const nodeVersion = process.versions.node; - - const nodeMajorVersion = semver.major(nodeVersion); - - const hasSupportedVersion = nodeVersionToEndOfLifeDateMap[nodeMajorVersion] > currentDate; - - return { - getStatus: () => { - return { - id: `supported-node-js-version-${region}`, - name: `Long-term supported (LTS) Node.js version used for ${appName} (${region.toUpperCase()})`, - ok: hasSupportedVersion, - checkOutput: hasSupportedVersion - ? `${appName} uses v${nodeVersion} of Node.js, which is a long-term supported (LTS) version` - : `${appName} uses v${nodeVersion} of Node.js, which is not a long-term supported (LTS) version`, - lastUpdated, - severity: 3, - businessImpact: 'Systems may be subject to security and/or functional bugs that will not be fixed and which could manifest in various ways.', - technicalSummary: 'Inspects the version of Node.js running the application and verifies that the end-of-life date for it has not passed.', - panicGuide: 'Upgrade the app to a long-term supported version of Node.js at your earliest convenience.' - }; - } - }; -}; diff --git a/test/app/supported-node-js-version-check.test.js b/test/app/supported-node-js-version-check.test.js deleted file mode 100644 index b5f222b2..00000000 --- a/test/app/supported-node-js-version-check.test.js +++ /dev/null @@ -1,65 +0,0 @@ -const { expect } = require('chai'); - -const supportedNodeJsVersionCheck = require('../../src/lib/supported-node-js-version-check'); - -describe('Supported Node.js version check', () => { - - let subject; - let healthCheckResponse; - - context('when the `REGION` environment variable is absent', () => { - - beforeEach(() => { - delete process.env.REGION; - subject = supportedNodeJsVersionCheck('foo-app'); - healthCheckResponse = subject.getStatus(); - }); - - it('suffixes the check ID with "eu"', () => { - expect(healthCheckResponse.id).to.equal('supported-node-js-version-eu'); - }); - - it('suffixes the check name with "(EU)"', () => { - expect(healthCheckResponse.name).to.equal('Long-term supported (LTS) Node.js version used for foo-app (EU)'); - }); - - }); - - context('when the `REGION` environment variable is set to "EU"', () => { - - beforeEach(() => { - process.env.REGION = 'EU'; - subject = supportedNodeJsVersionCheck('foo-app'); - healthCheckResponse = subject.getStatus(); - }); - - it('suffixes the check ID with "eu"', () => { - expect(healthCheckResponse.id).to.equal('supported-node-js-version-eu'); - }); - - it('suffixes the check name with "(EU)"', () => { - expect(healthCheckResponse.name).to.equal('Long-term supported (LTS) Node.js version used for foo-app (EU)'); - }); - - }); - - - context('when the `REGION` environment variable is set to "US"', () => { - - beforeEach(() => { - process.env.REGION = 'US'; - subject = supportedNodeJsVersionCheck('foo-app'); - healthCheckResponse = subject.getStatus(); - }); - - it('suffixes the check ID with "us"', () => { - expect(healthCheckResponse.id).to.equal('supported-node-js-version-us'); - }); - - it('suffixes the check name with "(US)"', () => { - expect(healthCheckResponse.name).to.equal('Long-term supported (LTS) Node.js version used for foo-app (US)'); - }); - - }); - -});