在JenkinsFile中仅声明一次configFileProvider,并在所有阶段进行引用

时间:2018-12-14 13:57:13

标签: java groovy jenkins-plugins jenkins-pipeline jenkins-groovy

我正在尝试为我们的管道自动化设置脚本化的JenkinsFile,并希望将configFileProvider用于maven。这样,我最终在脚本化的JenkinsFile中的所有Maven阶段中定义了此块。有没有一种方法可以在脚本中只定义一次并在所有阶段中引用它。到目前为止,我的样本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 COLLECTION),并且要做一个这样的示例:-< / p>

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

但是由于我对此并不熟悉,所以我正在寻找示例脚本的帮助,以帮助我实现这一点。使用上述方法是否可以使用工作脚本?

这里的任何帮助将一如既往。

干杯

阿什利

0 个答案:

没有答案