我已将Jenkins启动到我的虚拟机代理。虚拟机是Ubuntu 20.04。当我在VM上运行node -v时,我得到v16.20.1
。但是当我在Jenkins中运行这个管道时:
pipeline {
agent {
label 'ubuntu-server'
}
stages {
stage('Hello World') {
steps {
sh '/home/jenkins/.nvm/versions/node/v16.20.1/bin/node -v' //1
sh 'node -v' //2
}
}
}
}
字符串
第一个“sh”命令返回节点版本,但第二个命令给出错误消息:
+ /home/jenkins/.nvm/versions/node/v16.20.1/bin/node -v
v16.20.1
+ node -v
/home/jenkins/jenkins_slave/workspace/forgejo-app@tmp/durable-90f345a5/script.sh: 1: node: not found
型
我认为这是PATH变量的问题,所以我找到了这个解决方案:
pipeline {
agent {
label 'ubuntu-server'
}
stages {
stage('Hello World') {
steps {
withEnv( ["PATH=/home/jenkins/.nvm/versions/node/v16.20.1/bin/node:$env.PATH"]){
sh 'echo $PATH'
sh 'node -v'
}
}
}
}
}
型
但这是没有帮助的,我仍然得到同样的错误:
+ node -v
/home/jenkins/jenkins_slave/workspace/forgejo-app@tmp/durable-a9e9321a/script.sh: 1: node: not found
型
我还检查了durable-a9 e9321 a/script.sh文件中的内容,它是空的。
3条答案
按热度按时间cigdeys31#
您的Jenkins执行者可能没有运行此命令的授权。我不能给予你更多的细节,因为我的工作主要是在Windows上,但尝试使用
sudo node -v
。slmsl1lt2#
您可以切换用户到
jenkins
(su jenkins)并从jenkins
用户安装node。会干净得多,而且总是有效的出现问题是因为jenkins在
jenkins
用户下运行executor,而您在另一个用户(您的个人用户)下测试所有内容monwx1rj3#
我已经像这样改变了我的管道,现在它正在工作:
字符串