Объявите configFileProvider только один раз в JenkinsFile и обращайтесь ко всем этапам - PullRequest
0 голосов
/ 14 декабря 2018

Я пытаюсь настроить сценарий 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"
           }
       }
     }
}

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

Любая помощь здесь будет с благодарностью, как всегда.

Приветствия,

Эшли

...