【发布时间】:2019-10-24 20:05:19
【问题描述】:
我有一个 Jenkinsfile,它应该使用 nvm 在管道中安装特定的 nodejs。此管道使用安装了 nvm 的 Jenkins 代理。这是 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
"""
}
}
}
}
当我运行构建时,我总是在标准输出中看到这个:
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 设置的指定节点版本。
【问题讨论】:
-
由于默认情况下 nvm 安装是基于每个用户的,您可能需要通过运行 @987654325 检查您尝试设置为默认的 Node.js 版本是否已安装并可供 Jenkins 用户使用@.
-
@DibakarAditya 我运行了该命令,但没有输出。所以我尝试更改一些事情,例如以 Jenkins 用户身份运行 nvm 安装/使用,但它仍然指向 /usr/bin /node 和 nvm 列表没有将 10.16.3 视为版本。