如何使用jenkins pipeline和nvm wrapper插件?

00jrzges  于 2023-04-05  发布在  Jenkins
关注(0)|答案(4)|浏览(420)

我正在使用管道(Jenkinsfile),我需要更改节点版本。我添加了Nvm Wrapper插件,但我不知道如何从Jenkinsfile正确使用它
我应该在steps中添加nvm('...') {}吗?还是应该在node步骤的顶层?目前我甚至没有node步骤-一切都是使用sh完成的

zpf6vheq

zpf6vheq1#

对我有效的方法:

pipeline {
  agent any

  stages {
    stage("Build") {
      steps {
         nvm(nvmInstallURL: 'https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh', 
             nvmIoJsOrgMirror: 'https://iojs.org/dist',
             nvmNodeJsOrgMirror: 'https://nodejs.org/dist', 
             version: '8.1.2') {
                    sh "npm install"
                    echo "Build main site distribution"
                    sh "npm run build:dist"
              }
           }
        }
    ...
slhcrj9b

slhcrj9b2#

这对我有用

sh 'bash -l -c ". $HOME/.nvm/nvm.sh ; nvm use <version> || nvm install <version> && nvm use <version> "'

示例:

sh 'bash -l -c ". $HOME/.nvm/nvm.sh ; nvm use 8.0 || nvm install 8.0 && nvm use 8.0 "'
cnwbcb6i

cnwbcb6i3#

我最终使用了这个,它也可以与一个。nvmrc文件

sh 'bash -l -c ". $HOME/.nvm/nvm.sh ; nvm use || nvm install && nvm use"'

这要求nvm安装在jenkins主文件夹中,但添加一个步骤,首先在正确的位置下载nvm,这很容易。

r7s23pms

r7s23pms4#

最新的jenkins升级(2.319.2 --〉2.387.1)似乎引入了一个问题,这个nvm-wrapper插件不能在管道步骤中多次使用。在升级之前我们没有这个问题......但这就是我在这里登陆的原因。
上面的解决方案对我不起作用,因为我需要在调用nvm命令后在路径上设置node+npm二进制文件。下面是其他解决方案的改编,它取代了脚本管道中的nvm-wrapper:

env.ECHO_CMD = 'echo $NVM_BIN'
  env.NVM_BIN = sh (
     script: 'bash -l -c "source $HOME/.nvm/nvm.sh 1>&2; nvm use $NODE_VERSION 1>&2 || nvm install $NODE_VERSION 1>&2 && nvm use $NODE_VERSION 1>&2 && $ECHO_CMD "',
     returnStdout: true
  ).trim()
  echo "NVM_BIN: ${env.NVM_BIN}"
  env.PATH = "${env.NVM_BIN}:${env.PATH}"

  // do some node stuff in sh commands...
  sh 'node --version'
  sh 'npm --version'

相关问题