Page MenuHomePhabricator

Create WMF CI image for Node.js 14
Closed, ResolvedPublic

Description

From https://github.com/nodejs/Release

ReleaseInitial ReleaseActive LTS StartMaintenance StartEnd-of-life
Node.js 102018-04-242018-10-302020-05-192021-04-30
Node.js 122019-04-232019-10-212020-11-302022-04-30
Node.js 142020-04-212020-10-272021-10-19April 2023

As the EOL date for Node.js 10 is nearing, support from the ecosystem is starting to decline. This is primarly due to the ES2019 and ES2020 specifications for JavaScript (adopted in Node.js 12) being relatively big in terms of added capabilities.

Specifically, capabilities that can't easily run-time polyfilled, such as Node.js natively supporting the dynamic import() keyword for reading the .mjs file format, which older Node.js versions can't read (by default).

Use of native ESM is pretty much an all-or-nothing deal when packages are choosing to use it, they are forced to drop Node 10 at the same time. This won't immediately break anything since that will (hopefully) be a SemVer-Major change. But it does mean we might start to have some challenges updating packages, especially if there is an indirect dependency somewhere deep in the tree that didn't follow SemVer. At that point it would take a long time to chase down the whole chain and encourage each one to pin the version of the previous one. (Yay for npm not supporting shrinkwrap/lockfile for libraries.)

This means when developers update package.json locally and check-in package-lock.json, it will pass locally but fail in CI. Or if they use Node 10 locally as well, it'll fail both ways. I'm not actually sure there's even a clear way to fix that apart from manual package-lock.json patching for each update.

Anyway, this task is for creating a Node 14 base image for WMF CI. To be closed once:

  • The images node14, node14-test, node14-test-browser exist in integration-config.
  • The node14-test-browser image is used by the JJB job of at least one Gerrit repository and passing.

For further adoption, separate small or big parent tasks should be filed.

Event Timeline

@thcipriani What is this blocked on? The subtask was declined in November with the suggestion for CI to use binaries from nodejs.org instead of a WMF package.

thcipriani changed the task status from Stalled to Open.Jan 28 2021, 10:43 PM

@thcipriani What is this blocked on? The subtask was declined in November with the suggestion for CI to use binaries from nodejs.org instead of a WMF package.

I didn't realize that was the path going forward. Mistriaged.

Since node 10 end of life date 2021-04-30 is passed, can this task be prioritised? We(CX-cxserver) are not able to update our npm dependencies (for features or security fixes) since they are dropping support for node 10. Not to mention, the blocker on using new javascript in node services.

If we are blocked on debian bullseye release, then it comes with node 12, but that also would be EOL in next April.

Can somebody update the ticket with blockers any and current status? Thanks

Since node 10 end of life date 2021-04-30 is passed, can this task be prioritised? We(CX-cxserver) are not able to update our npm dependencies (for features or security fixes) since they are dropping support for node 10. Not to mention, the blocker on using new javascript in node services.

If we are blocked on debian bullseye release, then it comes with node 12, but that also would be EOL in next April.

Can somebody update the ticket with blockers any and current status? Thanks

Fixing this won't help you, as you're a production service using the pipeline and SRE-authorised images. That's the same issue as WVUI which I pointed out to them just today on T284253#7245653 – you want T284346 for node 12 (but that'll be EOL by April 2022, yes).

jeena moved this task from Backlog to Sprint 8/18-8/31 2021 on the User-jeena board.
jeena edited projects, added User-jeena (Sprint 8/18-8/31 2021); removed User-jeena.
jeena moved this task from Backlog to In Progress on the User-jeena (Sprint 8/18-8/31 2021) board.

Change 714625 had a related patch set uploaded (by Jeena Huneidi; author: Jeena Huneidi):

[integration/config@master] WIP CI node14 images

https://gerrit.wikimedia.org/r/714625

Change 714625 merged by jenkins-bot:

[integration/config@master] CI node14 images

https://gerrit.wikimedia.org/r/714625

Mentioned in SAL (#wikimedia-releng) [2021-08-27T19:24:43Z] <James_F> Docker: Publish initial node14 CI images for T267888

jeena removed jeena as the assignee of this task.Sep 13 2021, 8:30 PM
jeena subscribed.

I see there's a published node 14 CI image -- is there anything else left on this one?

/me reads task description more closely

  • The node14-test-browser image is used by the JJB job of at least one Gerrit repository and passing.

Nevermind :)

Change 721065 had a related patch set uploaded (by Hashar; author: Hashar):

[fresh@master] fresh-node: Update to Debian 11 Bullseye and Node 14 LTS

https://gerrit.wikimedia.org/r/721065

Change 723226 had a related patch set uploaded (by Krinkle; author: Krinkle):

[integration/npm@master] Install 7.5.2

https://gerrit.wikimedia.org/r/723226

Change 723226 merged by Krinkle:

[integration/npm@master] Install 7.5.2

https://gerrit.wikimedia.org/r/723226

Change 723256 had a related patch set uploaded (by Krinkle; author: Krinkle):

[integration/config@master] node14: Update from bundled npm 6 to pinned npm 7

https://gerrit.wikimedia.org/r/723256

Change 723256 merged by jenkins-bot:

[integration/config@master] node14: Update from bundled npm 6 to pinned npm 7

https://gerrit.wikimedia.org/r/723256

Heads-up for interested parties: I'm now working on node16 at T313075.