web-dev-qa-db-fra.com

Pipeline déclaratif Jenkins avec settings.xml personnalisé

J'essaie de mettre en place un pipeline Jenkins Declarative avec maven. Jusqu'à présent, je peux exécuter Maven, mais je ne parviens pas à utiliser mon Maven Settings.xml défini. 

pipeline{
   agent any
   tools{
       maven 'Apache Maven 3.3'
       // without mavenSettingsConfig, my settings.xml is not used.  With it, this blows up
       mavenSettingsConfig: 'Global Maven Settings'
       jdk 'jdk9
   }
   stages {
       stage('Preparation'){
           steps{
              //code checkout stuff here--this works fine
           }
       }
       stage('Build'){
            steps{
               sh "mvn clean install -P foo"
            }
       }
   }
}

Le problème semble être mavenSettingsConfig. Sans cette propriété, je ne saurais pas comment définir le fichier settings.xml, et mon travail maven personnalisé ne fonctionne pas. (Profil foo, par exemple.) Avec le mavenSettingsConfig, il explose:

PUNAISE! exception dans la phase 'canonicalization' dans l'unité source 'WorkflowScript' inattendue NullpointerException ....

La documentation contient un gros TODO, ce qui en donnera un exemple! Alors, comment je le fais?

(Documentation TODO sur https://wiki.jenkins.io/display/JENKINS/Pipeline+Maven+Plugin . Elle indique en fait "TODO fournit un exemple avec le pipeline déclaratif Jenkins")

4
MeowCode

mon conseil est d'utiliser le plugin Config File Provider: https://wiki.jenkins.io/display/JENKINS/Config+File+Provider+Plugin

Avec celui-ci, vous définissez votre fichier de configuration une fois dans l'écran "Gestion des fichiers de configuration" de Jenkins, puis vous avez un code comme celui-ci dans votre pipeline:

stage('Build'){
    steps{
    configFileProvider([configFile(fileId: 'my-maven-settings-dot-xml', variable: 'MAVEN_SETTINGS_XML')]) {
        sh 'mvn -U --batch-mode -s $MAVEN_SETTINGS_XML clean install -P foo'
    }
}

J'espère que ça aide

7
Francois Marot

vous devez déclarer et installer Maven dans votre code jenkins Managed Jenkins > Global Tools configuration et ajouter une installation maven nommée M3.

déclare une installation maven

Après avoir enregistré votre fichier de paramètres: 

manage jenkins > Managed files

Et ajoutez votre fichier de paramètres

Après cela, vous pouvez utiliser la fonction WithMaven avec votre fichier de registre comme ceci:

steps {
    withMaven(maven: 'M3', mavenSettingsConfig: 'mvn-setting-xml') {
        sh "mvn clean install "
    }
}
2
idriss Eliguene

J'ai eu ce problème tout ce que vous avez à faire est d'ajouter ce petit morceau de code dans votre ligne

def mvnSettings = 'Location of the file'
  sh "mvn clean install --settings ${mvnSettings} -P foo"

Alors maintenant, chaque fois que maven s'exécute, il localisera le fichier settings.xml dans le PATH que vous avez spécifié. 

P.S. c'est une commande maven que vous pouvez utiliser pour exécuter en ligne de commande 

J'espère que ça aide :)

0
rohit thomas