Page MenuHomePhabricator

Revisit how CI works for released branches
Open, Needs TriagePublic

Description

As we upgrade Node.js versions on CI, we often need to make upgrades in our repositories to support these changes. This is particularly a problem in repositories that build and commit assets (with Webpack/rollup) as building assets in different Node.js versions often produces different results which breaks validation given we commit those assets to the repo. It's also a problem in repos that use Webdriver as Webdriver often needs rebuilding/new releases with each new Node version.

When upgrading we often have to write several patches to the master branch in preparation, but we never consider release branches, and as a result often break compatibility with CI on older branches.

A recent example is T296082 where upgrading from Node.js required an upgrade to both WebdriverIO v5 as well as an update to nvm: https://gerrit.wikimedia.org/r/c/mediawiki/extensions/MobileFrontend/+/740616

This is very counterintuitive for people not familiar with the code repositories in questions that are trying to do releases and requires a bit of detective work from people having to revisit patches that are sometimes several years old.

One option to counter this is to freeze the Node.js version on relevant release branches. Another option would be to disable Selenium jobs on those branches altogether to reduce the work needed to get these to work with CI.

Alternatively, if we retain the status quo, we should be addressing this every time we do a Node.js release, making that part of our upgrade process.

Event Timeline

I think it's pretty seriously unlikely that we're going to want to support EOL node environments just for release branches. It's more likely that we'd just drop testing for those entirely.

That was my thought too. Maybe as a starting point, we could drop CI from branches 1releases back, e.g. since 1.38 is now what we are currently working on, we would only support 1.37 but not 1.36, 1.35 etc. I think that would go a long way.

Is this still relevant, since MobileFrontend doesn't have WebdriverIO tests since 859535?

Yes this is still relevant as it talks about a generic problem, not specific to MobileFrontend. The same problem appears in Popups for example.