Page MenuHomePhabricator

Upgrade all CI jobs for WMF-deployed projects from Node 24 to Node 26
Open, Needs TriagePublic

Description

T395926: Upgrade all CI jobs for WMF-deployed projects from Node 22 to Node 24 | …

  • MediaWiki things
    • …
  • Libraries and tools
    • …

Node services to be done in T437512: Migrate node-based services in production to node26, not blocking this work.

Details

Related Changes in Gerrit:
SubjectAuthorRepoBranchLines +/-
Jforresterintegration/configmaster+33 -33
Hasharintegration/configmaster+57 -2
Jforresterintegration/configmaster+57 -2
Jforresterintegration/configmaster+0 -650
Jforresterintegration/configmaster+8 -2
Jforresterintegration/configmaster+0 -62
Jforresterintegration/configmaster+7 -7
Jforresterintegration/configmaster+2 -2
Hasharintegration/configmaster+8 -2
Jforrestermediawiki/corewmf/1.47.0-wmf.20+4 K -5 K
Jforresterintegration/configmaster+33 -33
Jforresterintegration/configmaster+80 -75
Jforresterintegration/configmaster+165 -116
Jforresterintegration/configmaster+118 -167
Jforresterintegration/configmaster+28 -0
Jforresterintegration/configmaster+75 -80
Jforresterintegration/configmaster+33 -33
Show related patches Customize query in gerrit

Event Timeline

Change #1342057 had a related patch set uploaded (by Jforrester; author: Jforrester):

[integration/config@master] Docker: [quibble-bookworm] Update Node from 24.18.0 to 26.8.2

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

Change #1342058 had a related patch set uploaded (by Jforrester; author: Jforrester):

[integration/config@master] jjb: Update Node from 24.18.0 to 26.8.2 for Quibble jobs

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

Change #1342059 had a related patch set uploaded (by Jforrester; author: Jforrester):

[integration/config@master] Zuul: Migrate MediaWiki-land independent CI Node from 24 to 26

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

Change #1342057 merged by jenkins-bot:

[integration/config@master] Docker: [quibble-bookworm] Update Node from 24.18.0 to 26.8.2

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

I have built the images this morning (from https://gerrit.wikimedia.org/r/c/integration/config/+/1342057/):

docker-registry.wikimedia.org/releng/quibble-bookworm:1.21.0-s3
docker-registry.wikimedia.org/releng/quibble-bookworm-php85:1.21.0-s3
docker-registry.wikimedia.org/releng/quibble-bookworm-php84:1.21.0-s3
docker-registry.wikimedia.org/releng/quibble-bookworm-php83:1.21.0-s3
docker-registry.wikimedia.org/releng/quibble-coverage:1.21.0-s3
docker-registry.wikimedia.org/releng/quibble-bookworm-php82:1.21.0-s3
docker-registry.wikimedia.org/releng/quibble-fresnel:1.21.0-s3
docker-registry.wikimedia.org/releng/quibble-bookworm-php81:1.21.0-s3

The big question is what is going to break as we upgrade NodeJS from 24.x to 26.x, notably the browser tests/webdriver.io which might require to be upgraded across supported branches :-/

The big question is what is going to break as we upgrade NodeJS from 24.x to 26.x, notably the browser tests/webdriver.io which might require to be upgraded across supported branches :-/

In general, we have two sources of breakage when we do this:

  • dependencies that break (like webdriverio) because they abuse internals of Node; and
  • repos that try to pin to a specific version of Node via .nvmrc and fail CI if it doesn't match.

The last time we had issues with the former was the Node 16 upgrade (due to wdio). It's possible that we'll be bitten by this again, but I'd be surprised.

The other one hits us every time for the handful of repos that keep doing this pinning, almost all of them owned by Readers group, and I have to fix them manually for them (both main and older branches).

Change #1342058 merged by jenkins-bot:

[integration/config@master] jjb: Update Node from 24.18.0 to 26.8.2 for Quibble jobs

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

Change #1342059 merged by jenkins-bot:

[integration/config@master] Zuul: Migrate MediaWiki-land independent CI Node from 24 to 26

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

Mentioned in SAL (#wikimedia-releng) [2026-09-18T13:48:53Z] <James_F> Zuul: Migrate MediaWiki-land independent CI Node from 24 to 26, for T438085

Change #1343068 had a related patch set uploaded (by Jforrester; author: Jforrester):

[integration/config@master] jjb: Provide Node 26 Codex jobs

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

Change #1343069 had a related patch set uploaded (by Jforrester; author: Jforrester):

[integration/config@master] Zuul: Remaining Node 24 -> 26 migrations

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

Change #1343070 had a related patch set uploaded (by Jforrester; author: Jforrester):

[integration/config@master] jjb: Migrate incidental Node use to Node 26

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

Change #1343071 had a related patch set uploaded (by Jforrester; author: Jforrester):

[integration/config@master] jjb: Drop Node 24 jobs, now unused

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

Change #1343068 merged by jenkins-bot:

[integration/config@master] jjb: Provide Node 26 Codex jobs

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

Change #1343069 merged by jenkins-bot:

[integration/config@master] Zuul: Remaining Node 24 -> 26 migrations

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

Change #1343075 had a related patch set uploaded (by Jforrester; author: Jforrester):

[integration/config@master] Docker: [ajv, sonar-scanner] Update Node from 24.18.0 to 26.8.2

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

Change #1343076 had a related patch set uploaded (by Jforrester; author: Jforrester):

[integration/config@master] jjb: Migrate sonar-scanner to images with Node 26

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

Change #1343077 had a related patch set uploaded (by Jforrester; author: Jforrester):

[integration/config@master] Docker: Drop Node 24 images, no longer used

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

Change #1343086 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/core@wmf/1.47.0-wmf.20] Re-generate package-lock.json for wmf.20

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

Change #1343110 had a related patch set uploaded (by Jforrester; author: Jforrester):

[integration/config@master] Revert "Zuul: Remaining Node 24 -> 26 migrations"

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

Change #1343111 had a related patch set uploaded (by Jforrester; author: Jforrester):

[integration/config@master] Revert "Zuul: Migrate MediaWiki-land independent CI Node from 24 to 26"

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

Change #1343110 merged by jenkins-bot:

[integration/config@master] Revert "Zuul: Remaining Node 24 -> 26 migrations"

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

Change #1343111 merged by jenkins-bot:

[integration/config@master] Revert "Zuul: Migrate MediaWiki-land independent CI Node from 24 to 26"

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

Change #1343120 had a related patch set uploaded (by Jforrester; author: Jforrester):

[integration/config@master] Revert "jjb: Update Node from 24.18.0 to 26.8.2 for Quibble jobs"

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

Change #1343120 merged by jenkins-bot:

[integration/config@master] Revert "jjb: Update Node from 24.18.0 to 26.8.2 for Quibble jobs"

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

Change #1343086 merged by jenkins-bot:

[mediawiki/core@wmf/1.47.0-wmf.20] Re-generate package-lock.json for wmf.20

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

It's possible? But if they're still broken, no, all of this work was reverted for different issues.

The tests now pass since this was reverted. I was just a bit slow creating T438510 while being distracted and not noticing this.

Still, if that upgrade would be rolled out again, those tests would likely break again like this. I'll leave it to you to decide whether these tests should be skipped for the upgrade (change doing that is attached to T438510 and ready for review), or whether these tests failing should be treated as a blocker for this task.

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

[integration/config@master] Docker: [ajv] Update Node from 24.18.0 to 26.8.2

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

Change #1343501 merged by jenkins-bot:

[integration/config@master] Docker: [ajv] Update Node from 24.18.0 to 26.8.2

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

Mentioned in SAL (#wikimedia-releng) [2026-09-21T11:37:19Z] <hashar> Build docker-registry.wikimedia.org/releng/ajv:0.4.1-s5 (upgrade Node from 24.18.0 to 26.8.2) Used by PipelineLib # T438085

The big question is what is going to break as we upgrade NodeJS from 24.x to 26.x, notably the browser tests/webdriver.io which might require to be upgraded across supported branches :-/

In general, we have two sources of breakage when we do this:

  • dependencies that break (like webdriverio) because they abuse internals of Node; and
  • repos that try to pin to a specific version of Node via .nvmrc and fail CI if it doesn't match.

The last time we had issues with the former was the Node 16 upgrade (due to wdio). It's possible that we'll be bitten by this again, but I'd be surprised.

Indeed webdriver.io used a fibers which relied feature from v8 that vanished at some point. And I guess they do have some breakage here and there. Probably we haven't had much fallout as part of upgrading to Node 20 and then 22. Thank you that is reassuring.

The other one hits us every time for the handful of repos that keep doing this pinning, almost all of them owned by Readers group, and I have to fix them manually for them (both main and older branches).

Isn't .nvmrc solely for nvm? What breaks when we update NodeJS on CI while the .nvmrc is stall in the past?
Regardless those repositories have a build step due to esbuild/webpack whatever (instead of resourceloader?) which I guess needs assets to be regenerated with the same version of Node that is used in CI to build/webpack etc. And I guess that breaks regardless of .nvmrc?

Change #1346056 had a related patch set uploaded (by Jforrester; author: Jforrester):

[integration/config@master] jjb: Upgrade Quibble-based jobs to ones with Node 26

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

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

[integration/config@master] Revert "Docker: [quibble-bookworm] Update Node from 24.18.0 to 26.8.2"

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

Change #1351193 merged by jenkins-bot:

[integration/config@master] Revert "Docker: [quibble-bookworm] Update Node from 24.18.0 to 26.8.2"

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