Page MenuHomePhabricator

Request to enable node version 12.14.1 in toolforge to deploy VideoCutTool
Closed, ResolvedPublic

Description

Deploying VideoCutTool back-end in toolforge at https://tools.wmflabs.org/video-cut-tool-back-end/ is failing.

I tried with both Kubernetes and also gridengine but failed.

It's a node.js tool and node version is v12.14.1. I realized toolforge is only supporting node version <=node10 got to know from https://wikitech.wikimedia.org/wiki/Help:Toolforge/Web#Running_npm_with_webservice_shell, Requesting WM Cloud services to enable to deploy nodejs tools version 12.14.1 sooner.

VideoCutTool Back-end: https://github.com/gopavasanth/video-cut-tool-back-end/
Tool: https://tools.wmflabs.org/video-cut-tool-back-end/
Node version: v12.14.1
Npm version: 6.13.4

Event Timeline

Our older version of video-cut-tool-back-end is v8.11.1, So, for now I'm making the tool live (just not to keep the tool dead) with the older version node v8.11.1 but to enable and deploy all the new features of the tool it requires the support of node v12.14.1. I will deploy the newer version of VideoCutTool soon after enabling the support :)

The best way to use a more recent version on Toolforge would be NVM to my knowledge. @bd808 that works on k8s as well as the grid, right?

@bd808 that works on k8s as well as the grid, right?

The current code from webservice-runner for both the grid and Kubernetes that would be relevant boils down to something like:

cd $HOME/www/js
if [ -f /usr/local/bin/npm ]; then
    NPM=/usr/local/bin/npm
elif [ -f /usr/bin/npm ]; then
    NPM=/usr/bin/npm
fi
$NPM start

The "python" (not generic uWSGI) type includes explicit checking for $HOME/www/python/venv. I think we would need to add something similar to make nvm work as hoped. The issue being that at least on the Kubernetes side there is no $HOME/.profile or similar place to insert the per-tool $PATH customization.

You can customize $PATH per tool on the pod level by simply adding some standard areas into the search path for that type of pod. If it doesn't exist, it won't harm anything. If we add an env array, we may have to also add the $HOME var in case we overwrite the pod preset (which would need a quick test to be sure).

That would mean we could eventually move away from needing webservice-runner in k8s.

Change 713267 had a related patch set uploaded (by Majavah; author: Majavah):

[operations/docker-images/toollabs-images@master] Add node12-sssd

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

Change 713267 merged by jenkins-bot:

[operations/docker-images/toollabs-images@master] Add node12-sssd

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

node12 image is now available for use with webservice and the beta jobs framework.