У меня есть Jenkinsfile, который, как предполагается, использует nvm для установки определенного nodejs в конвейер. В этом конвейере используется агент Jenkins, на котором установлен nvm. Вот как выглядит Jenkinsfile:
#!groovy
pipeline {
agent { label 'nvm' }
options {
// Add timestamps to the console output
timestamps()
// Avoid clutter - only keep the last 15 builds
buildDiscarder(logRotator(numToKeepStr: '15', artifactNumToKeepStr: '15'))
}
environment {
shortCommit = sh(returnStdout: true, script: 'git rev-parse HEAD').trim().take(8)
}
stages {
stage('Initialize Build') {
steps {
initBuild(commit: env.shortCommit)
}
}
stage('Unit Test') {
steps {
echo "Running Tests!"
sh """#!/bin/bash
set -exuo pipefail
/usr/local/nvm/nvm.sh use 10.16.3
/usr/local/nvm/nvm.sh alias default 10.16.3
which node
node -v
which nvm.sh
nvm.sh --version
"""
}
}
}
}
Когда я запускаю сборку, я всегда вижу это в stdout:
16:00:48 + /usr/local/nvm/nvm.sh use 10.16.3
16:00:49 + /usr/local/nvm/nvm.sh alias default 10.16.3
16:00:49 + which node
16:00:49 /usr/bin/node
16:00:49 + node -v
16:00:49 v10.14.2
16:00:49 + which nvm.sh
16:00:49 /usr/local/nvm/nvm.sh
16:00:49 + nvm.sh --version
Я замечаю, что когда я запускаю which node
, этовсегда указывает на /usr/bin/node
. Есть ли способ перезаписать это в Jenkinsfile, чтобы он фактически использовал версию узла, которую я настраивал в nvm? В общем, я хочу убедиться, что конвейер Jenkins указывает на указанную версию узла, установленную nvm.