在 JenkinsFile 中只声明一次 configFileProvider 并从所有阶段引用

Ash*_*ley 5 groovy jenkins jenkins-plugins jenkins-groovy jenkins-pipeline

我正在尝试为我们的管道自动化设置脚本化的 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}"
      } 
     }
    }
Run Code Online (Sandbox Code Playgroud)

这里的任何帮助或建议将一如既往地受到高度赞赏。

干杯,

阿什利

And*_*tão 0

由于它是脚本化的,因此您不必遵循严格的结构,尽管不太漂亮,但您可以更改顺序并将各个阶段放入 configFileProvider 中:

\n\n
configFileProvider(\n            [configFile(fileId: \'**********\', variable: \'MAVEN_SETTINGS\')]) {\n\n    stage(\'Build\'){\n        sh "\'${mvnHome}/bin/mvn\' -s $MAVEN_SETTINGS install"\n    }\n\n    stage(\'Integration Test\') {\n        sh "\'${mvnHome}/bin/mvn\' -Dmaven.test.failure.ignore clean verify"\n    }\n\n    stage(\'Sonar\') {\n        sh "\'${mvnHome}/bin/mvn\' -s $MAVEN_SETTINGS sonar:sonar"\n    }\n\n    stage(\'Packaging\') {\n        sh "\'${mvnHome}/bin/mvn\' -s $MAVEN_SETTINGS package"\n    }\n\n    stage(\'Deploy\') {   \n        sh "\'${mvnHome}/bin/mvn\' -s $MAVEN_SETTINGS deploy}"\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

最好的,\nAndr\xc3\xa9

\n