Мне очень не хочется быть этим парнем, но ....
Вы рассматривали плагин Jenkins Node.js ?Этот плагин позволяет объявлять несколько версий инструментов Jenkins для Node.js, а затем предоставляет некоторый конвейерный синтаксис для выбора версии Node + даже файла npmrc, когда вам нужно указать реестр или что-то в этом роде.
Пример фрагмента изJenkinsfile:
pipeline {
agent any
steps {
nodejs(nodeJSInstallationName: 'MY_NODEJS_TOOL_NAME_HERE', configId: 'ID_OF_THE_CONFIG_FILE') {
sh "node --version" // should be correct
}
}
}
Относительно того, почему ваш nvm не работает, я подозреваю (но это почти полностью предположение), что nvm
играет в игры с вашим PATH
, но когда блок sh
заканчивается так же умно сбрасывается путь.Таким образом, когда вы пытаетесь использовать версию Node в другом вызове sh
, PATH
возвращается к тому, что было раньше.