如何在jenkins的node version
中的多个阶段使用相同的debian node
?
node('debian') {
sh """
source ~/.nvm/nvm.sh &> /dev/null
nvm install 8 &> /dev/null
npm install yarn -g --silent
node --version # correct 8
yarn --version # correct 1.6.*
"""
timestamps {
ansiColor('xterm') {
stage('Prepare') {
sh """
node --version # wrong 6.11
yarn --version # wrong 1.12
"""
}
stage('Build') {
sh """
node --version # wrong 6.11
yarn --version # wrong 1.2
"""
}
}
}
}
答案 0 :(得分:0)
我非常讨厌成为那个人,但是......
您是否考虑过Jenkins Node.js Plugin?这个插件允许您声明Node.js Jenkins工具的多个版本,然后为您提供一些管道语法来选择Node版本+甚至是npmrc文件,以便在需要指定注册表或其他内容时使用。
Jenkinsfile的示例代码段:
function fill() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('a1').activate();
var lsr = spreadsheet.getLastRow();
lsr=lsr+1;
lsr="A1:A"+lsr;
spreadsheet.getActiveRange().autoFill(spreadsheet.getRange(lsr), SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES);
};
至于为什么你的nvm不工作,我怀疑(但几乎完全是猜测)pipeline {
agent any
steps {
nodejs(nodeJSInstallationName: 'MY_NODEJS_TOOL_NAME_HERE', configId: 'ID_OF_THE_CONFIG_FILE') {
sh "node --version" // should be correct
}
}
}
正在和你的nvm
一起玩游戏,但当PATH
块结束时巧妙地重置路径。因此,当您尝试在另一个sh
电话中使用您的节点版本时,sh
将恢复到以前的状态。