Page MenuHomePhabricator

Jenkins: Upgrade nodejs from 0.8.x to 0.10.x on wmflabs integration slaves
Closed, ResolvedPublic

Description

This is overdue.

Various packages used by individual Grunt tasks used by local projects already throw warnings for the engine being unsupported.

These are not the packages for the legacy global tools in package.json in integration/jenkins.git:/tools aka slave-scripts, but the local package.json in projects like oojs, oojs-ui and VisualEditor.

As far as I can see these jobs seem to function fine, but it's really dangerous territory. The packages are explicitly indicated as requiring 0.10.x or higher (it's like executing a PHP application documented as requiring PHP 5.3 under PHP 5.1.x).

Both the upstream developer, their integration tests and the developers in our teams working locally already use Nodejs 0.10.x or higher, so this is waiting for something to fail.


Version: wmf-deployment
Severity: enhancement

Details

Reference
bz66056

Event Timeline

bzimport raised the priority of this task from to Normal.Nov 22 2014, 3:26 AM
bzimport set Reference to bz66056.
Krinkle created this task.Jun 2 2014, 10:56 PM

On contint slaves we have nodejs 0.8.2 which comes from apt.wikimedia.org. AFAIK that is the version used on parsoid servers as well.

When I asked npm package to be backported with RT #6519 Faidon the plan is to migrate to Ubuntu Trusty (14.04) which ships 0.10.25.

wmflabs now provides a Trusty virtual image and we run npm jobs there.

So you can:

  • build an instance using Trusty image
  • attempt to apply the puppet manifest role::ci::slave::labs
  • add the slave in Jenkins (we can pair that part)
  • apply a label to the slave (ex: UbuntuTrusty) and tie some job to it

A culprit: anything running in production with nodejs 0.8 should probably be kept with nodejs 0.8 (parsoid parser tests come to mind) or we might end up missing incompatibility. You can sync with Gabriel Wicke for that part.

Overall: yeah lets go!

hashar added a comment.Aug 1 2014, 9:46 AM

We have a Trusty Jenkins slave in labs: integration-slave1004-trusty.eqiad.wmflabs

It has the label UbuntuTrusty. The npm based jobs can be made to run on it by changing the node: definition in Jenkins Job Builder configuration.

The node has:

$ npm --version
1.3.10
$ nodejs --version
v0.10.25
$

The Trusty slave is integration-slave1006-trusty.eqiad.wmflabs

The label remain unchanged: UbuntuTrusty.

Marking this bug as fixed since npm/nodejs are available there. "Just" have to update the label in the job configuration.

Change 159224 had a related patch set uploaded by Krinkle:
[WIP] job-templates: Move {name}-npm from Precise to Trusty

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

Change 159224 merged by jenkins-bot:
job-templates: Move {name}-npm from Precise to Trusty

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