Декларативный конвейер Jenkins с пользовательскими настройками.xml - PullRequest
0 голосов
/ 06 июня 2018

Я пытаюсь настроить декларативный конвейер Jenkins с maven.Пока я могу запустить maven, но не могу использовать мой определенный Maven Settings.xml.

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

Кажется, проблема в mavenSettingsConfig.Без этого свойства я не могу понять, как установить файл settings.xml, и мои пользовательские элементы maven не работают.(Профиль foo, например.) С mavenSettingsConfig он взрывается:

БАГ!исключение в фазе 'канонизации' в исходном модуле 'WorkflowScript' неожиданное исключение NullpointerException ....

В документации содержится большое TODO, в котором приведен пример для этого!Так как мне это сделать?

(Документация TODO на https://wiki.jenkins.io/display/JENKINS/Pipeline+Maven+Plugin. На самом деле написано, что "TODO предоставляет образец с декларативным конвейером Jenkins")

Ответы [ 4 ]

0 голосов
/ 23 июля 2019

Также возможно использование учетных данных секретного файла из Плагин привязки учетных данных

Создание секретного файла в jenkins: enter image description here

Тогда вы можете использовать этот файл настроек, как это

pipeline {
    environment {
    MVN_SET = credentials('maven_settings')
  }
  agent {
    docker 'maven:3-alpine'
  }
  stages {
    stage('mvn test settings') {
      steps {
        sh 'mvn -s $MVN_SET help:effective-settings'
      }
    }
  }
}
0 голосов
/ 08 июня 2018

Мой совет - использовать плагин Config File Provider: https://wiki.jenkins.io/display/JENKINS/Config+File+Provider+Plugin

С его помощью вы один раз определяете свой файл конфигурации на экране Jenkins «Config File Management», а затем добавляете такой код в свой конвейер.:

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

Надеюсь, это поможет

0 голосов
/ 08 июня 2018

вы должны объявить и установить maven в вашем jenkins Managed Jenkins > Global Tools configuration и добавить установку maven с именем M3.

объявить установку maven

После того, как вам нужноЗарегистрируйте свой файл настроек:

manage jenkins > Managed files

И добавьте свой файл настроек.

После этого вы можете использовать функцию WithMaven с вашим файлом реестра следующим образом:

steps {
    withMaven(maven: 'M3', mavenSettingsConfig: 'mvn-setting-xml') {
        sh "mvn clean install "
    }
}
0 голосов
/ 07 июня 2018

У меня была эта проблема, все, что вам нужно сделать, это добавить этот небольшой фрагмент кода в вашей строке

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

Так что теперь, когда запускается maven, он находит файл settings.xml в указанной вами PATH

PS это команда maven, которую вы можете использовать для запуска в командной строке

Надеюсь, это поможет:)

...