Page MenuHomePhabricator

Jenkins: JSDuck should run on Ruby 1.9 instead of Ruby 1.8
Closed, ResolvedPublic

Description

jenkins is still using Ruby 1.8 when generating/testing JSDuck documentation. 1.8 was EOL'd last June (https://www.ruby-lang.org/en/news/2013/06/30/we-retire-1-8-7/) and the current version is 2.1.

JSDuck 4 runs perfectly well on newer versions, I think you could upgrade to at least 1.9 with no hiccups.

I noticed this when looking at a segfault that happened on this job:
https://integration.wikimedia.org/ci/job/mediawiki-core-jsduck/3304/console
– upgrading Ruby will probably fix this kind of problems too.


Version: unspecified
Severity: major

Details

Reference
bz60138
Related Gerrit Patches:

Event Timeline

bzimport raised the priority of this task from to Medium.Nov 22 2014, 3:00 AM
bzimport set Reference to bz60138.
bzimport added a subscriber: Unknown Object (MLST).
matmarex created this task.Jan 16 2014, 4:42 PM

On Ubuntu Precise the default ruby version is 1.8.7. We have both 1.9.1 and 1.9.3 already installed on slaves so it a matter of figuring out how to run jsduck with the other ruby version :-]

The stacktrace only happened once apparently, not sure it is related to ruby 1.8.x. Since using ruby 1.9 is unlikely to enhance our jsduck run, I am closing this bug.

Ruby 1.8 is past its EOL. We should not be using obsolete software which is no longer receiving bug fixes.

Ruby 1.8 is the default on Precise. And since it is used by puppet among other, I would prefer to stick to it for now :-D

MediaWiki 1.15 is also the default on Precise, you know.

The fact that Ubuntu/Debian uses obsolete software doesn't mean we should be using obsolete software. But, well, you're the boss here :)

(In reply to Bartosz Dziewoński from comment #6)

I've gotten a segfault again. https://gerrit.wikimedia.org/r/#/c/114400/1

https://integration.wikimedia.org/ci/job/mediawiki-core-jsduck/3595/console

See https://github.com/senchalabs/jsduck/issues/353.

Using upstream recommended workaround as of I1c8dac8dcf537a4a.

The job is still segfaulting. https://gerrit.wikimedia.org/r/#/c/114373/

Was the fix deployed?

Reopening per Timo comment #7. There is a workaround which is to disable parallel processing.

Fix is described at https://gerrit.wikimedia.org/r/#/c/114401/

I have refreshed the two jsduck jobs in Jenkins. We will see whether the workaround works.

Thanks to Timo, we now have Ubuntu Trusty instances which comes by default with:

$ ruby --version
ruby 1.9.3p484 (2013-11-22 revision 43786) [x86_64-linux]
$

We can get the JSDuck jobs to run on Trusty node by having them tied to labels UbuntuTrusty && contintLabsSlave then use the jjb push-doc macro to publish to doc.wikimedia.org as described on http://www.mediawiki.org/wiki/Continuous_integration/Documentation_generation

hashar lowered the priority of this task from Medium to Lowest.Nov 24 2014, 4:03 PM
hashar moved this task from Untriaged to Ready on the Continuous-Integration-Infrastructure board.
hashar set Security to None.
Krinkle raised the priority of this task from Lowest to Medium.Dec 16 2014, 5:19 PM
Krinkle removed a subscriber: Unknown Object (MLST).

Ruby 1.9.x will also be EOL'd in February, by the way, so the target should probably be 2.0 or 2.1.

demon removed a subscriber: demon.Dec 16 2014, 6:02 PM

We still have more jobs to migrate, but the new pipeline for JSDuck from labs has been tested with f132c7cbc406. JSDuck now runs fine on Ubuntu Trusty with Ruby 1.9.

Upgrading to newer Ruby versions is likely going to be done as part of upgrading to the next Ubuntu version. Backporting involves too many hurdles for CI to handle on their own. We can revisit this if it becomes a blocker for a specific bug or feature we need in CI.

Krinkle closed this task as Resolved.Feb 22 2015, 7:05 PM
Krinkle claimed this task.

Change 194058 had a related patch set uploaded (by Krinkle):
jsduck: Remove obsolete --process=0 override for Ruby 1.8

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

Change 194058 merged by jenkins-bot:
jsduck: Remove obsolete --process=0 override for Ruby 1.8

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