如何将jenkins管道与nvm包装器插件一起使用?

问题描述 投票:0回答:5
我正在使用管道(

Jenkinsfile

)并且我需要更改节点版本。我添加了 Nvm Wrapper 插件,但我不知道如何正确使用它 
Jenkinsfile


我应该在

nvm('...') {}

内添加
steps
吗?或者它应该位于 
node
 步骤中的顶级位置?
目前我什至没有 
node
 步骤 - 一切都是使用 
sh
 完成的
    

node.js jenkins jenkins-plugins jenkins-pipeline
5个回答
9
投票
什么对我有用:

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" } } } ...
    

5
投票
这对我有用

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 "'
    

2
投票
最新的 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'
    

1
投票
我最终使用了这个,它也适用于 .nvmrc 文件

sh 'bash -l -c ". $HOME/.nvm/nvm.sh ; nvm use || nvm install && nvm use"'
这需要 nvm 安装在 jenkins 主文件夹中。但添加一个首先在正确位置下载 nvm 的步骤会很容易。


0
投票
如果您的 CI 管道在 5 分钟后持续停止,请考虑观看本教程。

nvm.sh 脚本将检查“nodejs/index.tab”和“iojs/index.tab”,然后验证是否使用 nvm_is_version_installed 安装版本。

nvm 包装器应为 Node.js 或 io.js(不是两者)设置环境变量,并防止外部变量(例如“HTTP_PROXY”)干扰。

您的管道脚本应遵循以下模式:

pipeline { agent { label '!windows' } stages { stage("Build-MMM") { steps { nvm(nvmInstallURL: 'https://gitee.com/mirrors/nvm/raw/master/install.sh', nvmNodeJsOrgMirror: 'https://npmmirror.org/mirrors/node && NVM_IOJS_ORG_MIRROR=https://npmmirror.org/mirrors/iojs', nvmIoJsOrgMirror: 'https://npmmirror.org/mirrors/iojs && NVM_NODEJS_ORG_MIRROR=https://npmmirror.org/mirrors/node', version: '16') { ... } } } ...
    
© www.soinside.com 2019 - 2024. All rights reserved.