#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}"
}
}
Это единственный найденный подход