强制Jenkins管道使用特定节点版本

b1payxdu  于 2023-01-20  发布在  Jenkins
关注(0)|答案(4)|浏览(235)

我有一个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
        """
        }
     }
   }

}

当我运行构建时,我总是在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设置的指定节点版本。

628mspwn

628mspwn1#

看起来您在jenkinsfile中只提供了“agent”。您还需要在“agent”中提供其他“node”
确保在Jenkins服务器上创建节点。

pipeline {
       agent { 
               node {  label 'nvm'} 
             }
    options {
    // Add timestamps to the console output
exdqitrt

exdqitrt2#

在管道中使用withENV设置不同版本的节点路径。

t40tm48m

t40tm48m3#

您可以直接使用节点10路径:

/usr/bin/node10 -v
rhfm7lfc

rhfm7lfc4#

我们在React/RN for Web项目中有一个cicd/cicd.properties文件,您可以像这样指定节点版本:

rnc.yarn.default=. $NVM_DIR/nvm.sh && nvm use 14.19.1 && yarn install

相关问题