我正在使用管道(Jenkinsfile),我需要更改节点版本。我添加了Nvm Wrapper插件,但我不知道如何从Jenkinsfile正确使用它我应该在steps中添加nvm('...') {}吗?还是应该在node步骤的顶层?目前我甚至没有node步骤-一切都是使用sh完成的
Jenkinsfile
steps
nvm('...') {}
node
sh
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" } } } ...
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 "'
cnwbcb6i3#
我最终使用了这个,它也可以与一个。nvmrc文件
sh 'bash -l -c ". $HOME/.nvm/nvm.sh ; nvm use || nvm install && nvm use"'
这要求nvm安装在jenkins主文件夹中,但添加一个步骤,首先在正确的位置下载nvm,这很容易。
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'
4条答案
按热度按时间zpf6vheq1#
对我有效的方法:
slhcrj9b2#
这对我有用
示例:
cnwbcb6i3#
我最终使用了这个,它也可以与一个。nvmrc文件
这要求nvm安装在jenkins主文件夹中,但添加一个步骤,首先在正确的位置下载nvm,这很容易。
r7s23pms4#
最新的jenkins升级(2.319.2 --〉2.387.1)似乎引入了一个问题,这个nvm-wrapper插件不能在管道步骤中多次使用。在升级之前我们没有这个问题......但这就是我在这里登陆的原因。
上面的解决方案对我不起作用,因为我需要在调用nvm命令后在路径上设置node+npm二进制文件。下面是其他解决方案的改编,它取代了脚本管道中的nvm-wrapper: