如何在jenkins的脚本管道中使用全局安装的nodejs?

lvmkulzt  于 12个月前  发布在  Jenkins
关注(0)|答案(1)|浏览(141)

这是我的jenkinsfile(我不需要自由式工作解决方案):

node('k8s-jenkins-agent') {
    env.COMPOSE_PROJECT_NAME = sh(returnStdout: true, script: 'hostname').trim()
    env.GRADLE_USER_HOME = "${env.WORKSPACE}/.gradle"
    env.JAVA_HOME="${tool 'jdk-1.8.0_321'}"
    env.PATH="${env.JAVA_HOME}/bin:${env.PATH}"
    def branches = ["master"]
    try {
        stage 'Build'
          checkout scm
          sh 'gradle -version'
          sh 'node --version'
    } catch (e) {
      throw e
    }
}

这给了我script.sh: line 1: node: command not found错误。我试过问chatGPT,试过所有的建议,但没有一个奏效。

irlmq6kh

irlmq6kh1#

添加nodejs工具和修改路径如下解决了这个问题。

env.NODEJS_HOME = "${tool '[name_of_installed_nodejs]'}"
env.PATH="${env.JAVA_HOME}/bin:${env.PATH}:${env.NODEJS_HOME}/bin:${env.PATH}"

令人惊讶的是,这种语法在任何地方都不可用。
jenkinsfile看起来像:

#!groovy
node('k8s-jenkins-agent') {
    env.COMPOSE_PROJECT_NAME = sh(returnStdout: true, script: 'hostname').trim()
    env.GRADLE_USER_HOME = "${env.WORKSPACE}/.gradle"
    env.JAVA_HOME="${tool 'jdk-1.8.0_321'}"
    env.NODEJS_HOME = "${tool 'NodeJS-14.20.0'}"
    env.PATH="${env.JAVA_HOME}/bin:${env.PATH}:${env.NODEJS_HOME}/bin:${env.PATH}"
    def branches = ["master"]
    try {
        stage 'Build'
          checkout scm
          sh 'gradle -version'
          sh 'node --version'

    } catch (e) {
      throw e
    }
}

相关问题