Одна и та же версия NodeJS на нескольких этапах в Jenkins - PullRequest
0 голосов
/ 18 мая 2018

Как использовать один и тот же 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 голосов
/ 22 мая 2018

Мне очень не хочется быть этим парнем, но ....

Вы рассматривали плагин Jenkins Node.js ?Этот плагин позволяет объявлять несколько версий инструментов Jenkins для Node.js, а затем предоставляет некоторый конвейерный синтаксис для выбора версии Node + даже файла npmrc, когда вам нужно указать реестр или что-то в этом роде.

Пример фрагмента изJenkinsfile:

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заканчивается так же умно сбрасывается путь.Таким образом, когда вы пытаетесь использовать версию Node в другом вызове sh, PATH возвращается к тому, что было раньше.

...