web-dev-qa-db-fra.com

Comment définir PATH dans le pipeline déclaratif Jenkins

Dans le pipeline scripté Jenkins, vous pouvez définir la variable env PATH comme suit:

node {
   git url: 'https://github.com/jglick/simple-maven-project-with-tests.git'
   withEnv(["PATH+MAVEN=${tool 'M3'}/bin"]) {
      sh 'mvn -B verify'
   }
}

Notez le PATH + MAVEN comme expliqué ici https://jenkins.io/doc/pipeline/steps/workflow-basic-steps/ # code-withenv-code-set-environment-variables :

Liste de variables d’environnement à définir, chacune sous la forme VARIABLE = valeur ou VARIABLE = pour désactiver des variables définies par ailleurs. Vous pouvez également utiliser la syntaxe PATH + WHATEVER =/quelque chose à ajouter/quelque chose à $ PATH.

Mais je n'ai pas trouvé comment le faire dans un pipeline déclaratif utilisant la syntaxe d'environnement (comme expliqué ici: https://jenkins.io/doc/pipeline/tour/environment ).

environment {
    DISABLE_AUTH = 'true'
    DB_ENGINE    = 'sqlite'
}

Idéalement, j'aimerais mettre à jour PATH pour utiliser des outils personnalisés pour toutes mes étapes.

23
Vincent

C'est possible avec la section environment:

pipeline {
  agent { label 'docker' }
  environment {
    PATH = "/hot/new/bin:$PATH"
  }
  stages {
    stage ('build') {
      steps {
        echo "PATH is: $PATH"
      }
    }
  }
}

Voir cette réponse pour plus d'informations.

39
Vadim Kotov

Pour contourner ce problème, vous pouvez définir une variable d'environnement et l'utiliser dans l'étape sh:

pipeline {
    environment {
        MAVEN_HOME = tool('M3')
    }

    stages {
        stage(Maven') {
           sh '${MAVEN_HOME}/bin/mvn -B verify'
        }
    }
}
3
Dan Berindei

Vérifiez le lien suivant, ceci explique comment configurer vos outils. En utilisant le pipeline déclaratif, les choses deviennent un peu différentes, mais dans l’ensemble, elles sont plus faciles à comprendre.

declarative-maven-project

2
Wim Ederveen

L'utilisation de la section d'outils dans le pipeline n'est autorisée que pour les outils globaux préinstallés. Certains outils sont fournis par des plugins, mais s'il n'existe pas, je crains que vous ne puissiez pas utiliser la configuration de l'environnement via la déclaration de l'outil de pipeline.

J'espère me tromper!

1
PRF