Я пытаюсь настроить сценарий JenkinsFile для нашей конвейерной автоматизации и хотел бы использовать configFileProvider для maven.Таким образом, я в конечном итоге определяю этот блок на всех этапах maven в сценарии JenkinsFile.Есть ли способ определить это только один раз в сценарии и ссылаться на него на всех этапах.Мой образец JenkinsFile на данный момент выглядит примерно так: -
node {
def mvnHome
def mvnSettings
stage('Prepare') {
mvnHome = tool 'maven-3.5.4'
}
stage('Checkout') {
checkout scm
}
stage('Build'){
configFileProvider(
[configFile(fileId: '**********', variable: 'MAVEN_SETTINGS')]) {
sh "'${mvnHome}/bin/mvn' -s $MAVEN_SETTINGS install"
}
}
stage('Integration Test') {
sh "'${mvnHome}/bin/mvn' -Dmaven.test.failure.ignore clean verify"
}
stage('Sonar') {
configFileProvider(
[configFile(fileId: '**********', variable: 'MAVEN_SETTINGS')]) {
sh "'${mvnHome}/bin/mvn' -s $MAVEN_SETTINGS sonar:sonar"
}
}
stage('Packaging') {
configFileProvider(
[configFile(fileId: '**********', variable: 'MAVEN_SETTINGS')]) {
sh "'${mvnHome}/bin/mvn' -s $MAVEN_SETTINGS package"
}
}
stage('Deploy') {
configFileProvider(
[configFile(fileId: '**********', variable: 'MAVEN_SETTINGS')]) {
sh "'${mvnHome}/bin/mvn' -s $MAVEN_SETTINGS deploy}"
}
}
}
Я откуда-то узнал, что я мог бы использовать каждый цикл для итерации сценариев одинакового типа на разных этапах, но для этого мне нужно будет создать список (КОЛЛЕКЦИЯ JAVA)и для этого образец выглядит так: -
node {
def buildStage=[Build,Sonar,Packaging,Deploy]
buildStage.each {x ->
println "$x"
stage('$x') {
configFileProvider(
[configFile(fileId: '**********', variable: 'MAVEN_SETTINGS')]) {
sh "'${mvnHome}/bin/mvn' -s $MAVEN_SETTINGS $x"
}
}
}
}
Но так как я не знаком с этим, я ищу некоторую помощь с примером сценария, чтобы помочь мне реализовать это.Есть ли рабочий скрипт, который я могу использовать, используя описанный выше подход.
Любая помощь здесь будет с благодарностью, как всегда.
Приветствия,
Эшли