Заставить конвейер Jenkins использовать конкретную версию узла - PullRequest
0 голосов
/ 24 октября 2019

У меня есть Jenkinsfile, который, как предполагается, использует nvm для установки определенного nodejs в конвейер. В этом конвейере используется агент Jenkins, на котором установлен nvm. Вот как выглядит Jenkinsfile:

    #!groovy

pipeline {
   agent { label 'nvm' }
   options {
    // Add timestamps to the console output
    timestamps()
    // Avoid clutter - only keep the last 15 builds
    buildDiscarder(logRotator(numToKeepStr: '15', artifactNumToKeepStr: '15'))
    }
    environment {
    shortCommit = sh(returnStdout: true, script: 'git rev-parse HEAD').trim().take(8)
    }
    stages {
       stage('Initialize Build') {
          steps {
          initBuild(commit: env.shortCommit)
          }
       }
      stage('Unit Test') {
    steps {
        echo "Running Tests!"
        sh """#!/bin/bash
            set -exuo pipefail
            /usr/local/nvm/nvm.sh use 10.16.3
            /usr/local/nvm/nvm.sh alias default 10.16.3
            which node
            node -v
            which nvm.sh
            nvm.sh --version
        """
        }
     }
   }

}

Когда я запускаю сборку, я всегда вижу это в stdout:

16:00:48  + /usr/local/nvm/nvm.sh use 10.16.3
16:00:49  + /usr/local/nvm/nvm.sh alias default 10.16.3
16:00:49  + which node
16:00:49  /usr/bin/node
16:00:49  + node -v
16:00:49  v10.14.2
16:00:49  + which nvm.sh
16:00:49  /usr/local/nvm/nvm.sh
16:00:49  + nvm.sh --version

Я замечаю, что когда я запускаю which node, этовсегда указывает на /usr/bin/node. Есть ли способ перезаписать это в Jenkinsfile, чтобы он фактически использовал версию узла, которую я настраивал в nvm? В общем, я хочу убедиться, что конвейер Jenkins указывает на указанную версию узла, установленную nvm.

1 Ответ

0 голосов
/ 25 октября 2019

Похоже, вы указали только «агент» в jenkinsfile. Вам также необходимо указать дополнительный «узел» внутри «агента»

Убедитесь, что узел создан на вашем сервере Jenkins.

   pipeline {
       agent { 
               node {  label 'nvm'} 
             }
    options {
    // Add timestamps to the console output
...