Внедрить переменную Дженкинса в maven с использованием декларативного конвейера

#jenkins #jenkins-pipeline #jenkins-plugins #maven-plugin #jenkins-declarative-pipeline

#Дженкинс #дженкинс-конвейер #дженкинс-плагины #maven-плагин #дженкинс-декларативный конвейер

Вопрос:

Хотите обведенную функциональность в синтаксисе декларативного конвейера

Я не могу добавить вышеуказанную обведенную функциональность в прикрепленное изображение в качестве декларативного синтаксиса конвейера.
PS Я новичок в этом, я искал это в других ответах, но никто не соответствует моим требованиям.

Например, если в Дженкинсе есть параметр с именем VERSION, команда maven должна стать

 clean deploy -B -s pathtosettings.xml -DVERSION=valueinparameter
  

Ниже приведен мой текущий код
Примечание: Я ХОЧУ, ЧТОБЫ ВСЕ ПАРАМЕТРЫ БЫЛИ АВТОМАТИЧЕСКИ -DVERSION=${params .VERSION} мне не помогает

  pipeline {
  agent any
  stages {
    stage('Checkout Scm') {
      steps {
        git 'ssh://git@XXXXXXXXXXXXXXXXXXXXXXXXX.git'
      }
    }

    stage('Maven Build 0') {
      steps {
     
      configFileProvider([configFile(fileId:'0c0631a5-6510-4b4a-833d-4b80fa67d5f3', targetLocation: 'settings.xml', variable: 'SETTINGS_XML')]) {
withMaven{  
 sh "mvn clean deploy -B -s ${SETTINGS_XML}
        }
        }
      }
    }

    
  tools {
    jdk 'JDK_1.8'
  }
  
  
  parameters {
    string(name: 'VERSION', defaultValue: '3_12_0', description: 'version to be in maven')
  }
}
  

Комментарии:

1. как насчет sh 'mvn clean deploy -B -s ${SETTINGS_XML} -DVERSION={VERSION}

Ответ №1:

Во-первых, я думаю, что вам не нужно targetLocation этого делать.

Чтобы получить доступ к значению вашего параметра, вам необходимо использовать params prefix .

Вот как я использую configFileProvider , чтобы заставить ее работать :

 configFileProvider([configFile(fileId: 'configFileId', variable: 'SETTINGS_XML')]) {
    sh "mvn clean deploy -s $SETTINGS_XML -B -DVERSION=$params.VERSION"
}
  

При этом переменная, которая связывает файл настроек, не заменяется, и она правильно используется в моем конвейере, а версия заменяется в команде. Не забудьте использовать
‘Maven settings.xml ‘ тип файла в configFileProvider .

Комментарии:

1. Спасибо, но это не добавляет все параметры в параметры, но я нашел решение, опубликованное ниже. Еще раз спасибо.

2. Хорошо, я неправильно понимаю вопрос, ваше решение должно работать.

Ответ №2:

  steps {
      script{
          foo= " "
          params.each {param ->
             foo = "${foo} -D${param.key}=${param.value} "
        }
      }
      configFileProvider([configFile(fileId:'XXXX', targetLocation: 'settings.xml', variable: 'SETTINGS_XML')]) {
        withMaven{
            sh "mvn clean deploy -B -s ${SETTINGS_XML} - ${foo}"
        }
      }
  

Это единственный найденный подход