如何动态解析工件发布版本作为 Jenkinsfile 中的参数 defaultValue

How to dynamically resolve artifact release version as parameter defaultValue in Jenkinsfile

我正在尝试创建一个 Jenkins 多分支管道,其参数默认为从 Maven 项目中的 pom.xml 解析的下一个构建版本。我尝试的是将发布版本存储在环境变量中并插入到参数的 defaultValue 属性中,但是在 Jenkins GUI 中,我只在输入字段中得到“Null”。如果我在舞台内回显 BUILD_RELEASE_VERSION,则正确显示发布版本。

我试过的

pipeline {
  agent any

  environment {
      BUILD_RELEASE_VERSION = readMavenPom().getVersion().replace("-SNAPSHOT", "")
  }

  parameters {
      string(
              name: "RELEASE_VERSION",
              description: "Release version.",
              defaultValue: "${env.BUILD_RELEASE_VERSION}")  
  }
  .....
}

非常感谢任何有关如何正确默认为下一发行版本的建议。谢谢

可以像下面的例子那样做

def version
node {
       // Icheckout the repo
       checkout scm
       version = sh script: 'mvn help:evaluate -Dexpression=project.version -q -DforceStdout', returnStdout: true
       
      /*
        //or read value from pom file, if you have youe own buildIn method
        version = readMavenPom().getVersion().replace("-SNAPSHOT", "")
       */
    }
}

pipeline {
    agent any;
    parameters {
        string(name: 'VERSION', defaultValue: version, description: 'Current POM version')
    }
    stages {
        stage('1') {
            steps {
                echo "Params : ${params}"
            }
        }
    }
}

在第一个运行后可以在VERSION参数字段看到pom文件版本号