使用声明式管道将 Jenkins 变量注入 Maven

Inject Jenkins Variable to maven using Declarative Pipeline

我无法在附加图像中将上述带圆圈的功能添加为声明性管道语法。
PS我是新手,我在其他答案上搜索过这个,但没有一个符合我的要求。

例如jenkins中有一个名为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')
  }
}

首先,我认为您不需要 targetLocation 来执行此操作。

要访问您的参数值,您需要使用 params 前缀。

这就是我使用 configFileProvider 使其工作的方式:

configFileProvider([configFile(fileId: 'configFileId', variable: 'SETTINGS_XML')]) {
    sh "mvn clean deploy -s $SETTINGS_XML -B -DVERSION=$params.VERSION"
}

有了这个,link 设置文件中的变量没有被替换,它在我的管道中被正确使用,并且版本在命令中被替换。不要忘记使用 'Maven settings.xml' configFileProvider.

中的文件类型
 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}"
        }
      }

这是找到的唯一方法