Jenkins

时间:2018-05-18 11:54:03

标签: node.js jenkins groovy continuous-integration

如何在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
        """
      }
    }
  }
}

1 个答案:

答案 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将恢复到以前的状态。