Page MenuHomePhabricator

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

Event Timeline

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

[integration/config@master] jjb: Provide node12 versions of existing node10 jobs

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

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

[integration/config@master] Zuul: [VisualEditor/VisualEditor] Switch node10 jobs to node12

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

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

[integration/config@master] Zuul: Migrate all node10 jobs to node12 in bulk

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

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

[integration/config@master] jjb: Drop unused node10 jobs

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

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

[integration/config@master] jjb: Switch special jobs from node10 to node12 images

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

Change 698244 merged by jenkins-bot:

[integration/config@master] jjb: Provide node12 versions of existing node10 jobs

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

Change 698245 merged by jenkins-bot:

[integration/config@master] Zuul: [VisualEditor/VisualEditor] Switch node10 jobs to node12

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

Mentioned in SAL (#wikimedia-releng) [2021-06-04T20:11:44Z] <James_F> Zuul: [VisualEditor/VisualEditor] Switch node10 jobs to node12 T284345

Change 698246 merged by jenkins-bot:

[integration/config@master] Zuul: Migrate all node10 jobs to node12 in bulk

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

Mentioned in SAL (#wikimedia-releng) [2021-06-04T20:13:55Z] <James_F> Zuul: Switch almost all node10 jobs to node12 T284345

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

[mediawiki/extensions/MobileFrontend@master] .nvmrc: Update to node 12.21.0 as CI has upgraded

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

Change 698247 merged by jenkins-bot:

[integration/config@master] jjb: Drop unused node10 jobs

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

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

[mediawiki/extensions/Popups@master] .nvmrc: Update to Node 12.21.0 as CI has migrated

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

Change 698248 merged by jenkins-bot:

[integration/config@master] jjb: Switch special jobs from node10 to node12 images

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

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

[integration/config@master] [WIP] dockerfiles: Provide node12-*php*-composer images

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

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

[integration/config@master] [WIP] dockerfiles: Provide a node12-based Kartotherian image

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

OK, this is mostly done except for two sets of jobs:

  • Jobs using the special Kartotherian image.
  • Jobs using the special PHP + Node images.

Both of those need some further work.

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

[mediawiki/skins/MinervaNeue@master] .nvmrc: Update to Node 12.21.0 as CI has migrated

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

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

[mediawiki/skins/Vector@master] .nvmrc: Update to Node 12.21.0 as CI has migrated

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

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

[mediawiki/extensions/Wikibase@master] .nvmrc: Update to Node 12.21.0 as CI has migrated

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

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

[wikibase/vuejs-components@master] .nvmrc: Update to Node 12.21.0 as CI has migrated

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

Change 698252 merged by jenkins-bot:

[mediawiki/extensions/MobileFrontend@master] .nvmrc: Update to node 12.21.0 as CI has upgraded

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

Change 698260 merged by jenkins-bot:

[mediawiki/skins/Vector@master] .nvmrc: Update to Node 12.21.0 as CI has migrated

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

Change 698259 merged by jenkins-bot:

[mediawiki/skins/MinervaNeue@master] .nvmrc: Update to Node 12.21.0 as CI has migrated

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

Change 698255 merged by jenkins-bot:

[mediawiki/extensions/Popups@master] .nvmrc: Update to Node 12.21.0 as CI has migrated

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

While playing with this locally I realized that, npm v7 uses a new lockfile version and whenever I run npm to install the packages it also updates the v1 lockfile to v2 adding a lot of diff overhead. - So I wonder if it might be useful ( when ever we are sure to stick with this version ) to run Libraryupgrader and mass adjust the repos.

Selenium jobs are not updated to node v12?

Example patch: 678287.
Example job: 55939.

...
INFO:quibble.commands:node --version: v10.24.0
INFO:quibble.commands:npm --version: 6.14.5
...

Selenium jobs are not updated to node v12?
...
INFO:quibble.commands:node --version: v10.24.0

Obviously they haven't been migrated yet.

This task has been opened late last Friday and is open. You can check the progress by looking at changes that have been attached to the task (press the Show related patches button below the task description). Or check https://gerrit.wikimedia.org/r/q/bug:T284345 :]

Selenium jobs are not updated to node v12?

Example patch: 678287.
Example job: 55939.

...
INFO:quibble.commands:node --version: v10.24.0
INFO:quibble.commands:npm --version: 6.14.5
...

Yeah, this task and announcement is about the JS jobs, not the quibble jobs.

Migrating the latter will be difficult. Quibble jobs currently run on buster, to be as close as possible to a production environment. SRE have vetoed backporting node 12+ to buster properly, so we'd have to either have to over-ride in CI and load a different version of node from what SRE provide, or switch the quibble selenium jobs over to bullseye. I slightly prefer the latter, but it'll be a chore.

Change 698258 abandoned by Jforrester:

[integration/config@master] [WIP] dockerfiles: Provide a node12-based Kartotherian image

Reason:

Dropping instead, in I621dc416be773285c315a143f830ce8d6fb2a85c.

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

Yeah, this task and announcement is about the JS jobs, not the quibble jobs.

Thanks! I misunderstood then. I thought most of the jobs are moved to node v12.

While playing with this locally I realized that, npm v7 uses a new lockfile version and whenever I run npm to install the packages it also updates the v1 lockfile to v2 adding a lot of diff overhead. - So I wonder if it might be useful ( when ever we are sure to stick with this version ) to run Libraryupgrader and mass adjust the repos.

We've had some issues with npm 7, namely that sometimes it randomly replaces an https link to a repo with SSH. This breaks libraryupgrader, so for the time being we're asking people to downgrade to 6, as the bug is still open: https://github.com/npm/cli/issues/2610

(Example where my npm 7 package-lock file broke things!) https://gerrit.wikimedia.org/r/c/mediawiki/services/citoid/+/674644/2#message-167c788635c5b18ac245a155c3bbba5e3a5a5a44

Hi, I think this broke CI for packages that use node-rdkafka, e.g. node-rdkakfa-factory, eventgate, etc.

Upgrading node-rdkafka may be error prone and take a lot of manual work to ensure that things don't break (we have to upgrade librdkafka too). Is there a reason we have to upgrade to node12 in CI, when the production services aren't using node 12?

https://integration.wikimedia.org/ci/job/generic-node12-docker/39/console

The eventgate, etc. CI still works, because they use service-pipeline, which has control over the docker images and versions that are used for both CI and prod. Should I switch these node-rdkafka-* library packages to using service-pipeline for CI too?

Hi, I think this broke CI for packages that use node-rdkafka, e.g. node-rdkakfa-factory, eventgate, etc.

Sorry about that. :-(

Upgrading node-rdkafka may be error prone and take a lot of manual work to ensure that things don't break (we have to upgrade librdkafka too). Is there a reason we have to upgrade to node12 in CI, when the production services aren't using node 12?

https://integration.wikimedia.org/ci/job/generic-node12-docker/39/console

Node10 left security support at the end of April.

The eventgate, etc. CI still works, because they use service-pipeline, which has control over the docker images and versions that are used for both CI and prod. Should I switch these node-rdkafka-* library packages to using service-pipeline for CI too?

Yes, as those are intended for running in production then using the pipeline would be a better fit. The legacy CI jobs are meant for development testing code, not production, really.

Happy to help migrate if needed.

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

[integration/config@master] Restore generic-node10-docker

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

Change 699431 merged by jenkins-bot:

[integration/config@master] Restore generic-node10-docker

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

Change 699435 had a related patch set uploaded (by Ottomata; author: Ottomata):

[integration/config@master] Use service-pipeline-test for node-rdkafka-factory

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

Change 699435 merged by jenkins-bot:

[integration/config@master] Zuul: [node-rdkafka-factory] Switch to service-pipeline-test

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

Mentioned in SAL (#wikimedia-releng) [2021-06-11T15:25:30Z] <James_F> Zuul: [node-rdkafka-factory] Switch to service-pipeline-test T284345

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

[integration/config@master] Zuul: [node-rdkafka-statsd] Switch to service-pipeline-test

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

Change 699443 had a related patch set uploaded (by Ottomata; author: Ottomata):

[node-rdkafka-statsd@master] Add .pipeline for CI tests

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

Change 699437 merged by jenkins-bot:

[integration/config@master] Zuul: [node-rdkafka-statsd] Switch to service-pipeline-test

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

Mentioned in SAL (#wikimedia-releng) [2021-06-11T15:50:31Z] <James_F> Zuul: [node-rdkafka-statsd] Switch to service-pipeline-test T284345

Change 699443 merged by Ottomata:

[node-rdkafka-statsd@master] Add .pipeline for CI tests

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