【问题标题】:Same NodeJS Version across multiple stages in JenkinsJenkins 中跨多个阶段的相同 NodeJS 版本
【发布时间】:2018-05-22 10:11:32
【问题描述】:

如何在 jenkins 的 debian node 中跨多个阶段使用相同的 node version

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

【问题讨论】:

    标签: node.js jenkins groovy continuous-integration


    【解决方案1】:

    我真的很讨厌成为那个人,但是....

    你考虑过Jenkins Node.js Plugin吗?这个插件可以让你声明多个版本的 Node.js Jenkins 工具,然后给你一些管道语法来选择 Node 版本 + 甚至一个 npmrc 文件,当你需要指定注册表或其他东西时。

    来自 Jenkinsfile 的示例 sn-p:

    pipeline {
      agent any
      steps {
        nodejs(nodeJSInstallationName: 'MY_NODEJS_TOOL_NAME_HERE', configId: 'ID_OF_THE_CONFIG_FILE') {
          sh "node --version" // should be correct
        }
      }
    }
    

    至于为什么你的 nvm 不工作,我怀疑(但这几乎完全是猜测)nvm 正在和你的PATH 玩游戏,但是当sh 块结束时,巧妙的重置路径也会结束。因此,当您尝试在另一个 sh 调用中使用您的 Node 版本时,PATH 会恢复到以前的状态。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-14
      • 1970-01-01
      • 2020-03-01
      • 1970-01-01
      • 2018-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多