如何使用 Jenkinsfile 将 BRANCH_NAME 传递给 jenkins 作业

How to use Jenkinsfile to pass BRANCH_NAME to a jenkins job

所以我有一个 jenkins 的工作,像这样检查一个 svn 仓库 remote: "svn://xyz-repo/svn/xyzclientjs/$BRANCH_NAME"]],

我通过此 svn 存储库中存在的 Jenkinsfile 传递此 $BRANCH_NAME。

现在在 Jenkinsfile 中,我正在这样做 -

node 'xyz-169' { 

  checkout scm
  def BRANCH_NAME = sh "svn info | grep -Po 'Relative URL: \^/\K.*'"
  def BRANCH_REV = sh "svn info --show-item revision"

    stage('Build A') {
         build job: 'xyzclientjs-webui-test', propagate: true, parameters:
            [
              [$class: 'StringParameterValue', name: 'BRANCH_NAME', value: $env.BRANCH_NAME],
              [$class: 'StringParameterValue', name: 'BRANCH_REV', value: $env.BRANCH_REV],
            ]

但是当我 运行 在 jenkins 上工作时,我得到以下错误

Error while checking out xyzclientjs branch from SVN
10:26:05  [Pipeline] error
10:26:05  [Pipeline] }
10:26:05  [Pipeline] // stage
10:26:05  [Pipeline] }
10:26:05  [Pipeline] // node
10:26:05  [Pipeline] End of Pipeline
10:26:05  java.lang.ClassCastException: org.jenkinsci.plugins.workflow.steps.ErrorStep.message expects class java.lang.String but received class groovy.lang.MissingPropertyException

有没有办法做到这一点。请帮助任何建议,我们将不胜感激。

您应该在此处查看示例以正确获取 sh 步骤的输出:

例如(由于缺少SVN未测试):

def BRANCH_NAME = sh (
  script: "svn info | grep -Po 'Relative URL: \^/\K.*'",
  returnStdout: true
).trim()