Jenkins pipeline 使用参数为ref的SCM的轻量级管道签出

Jenkins pipeline 使用参数为ref的SCM的轻量级管道签出,jenkins-pipeline,Jenkins Pipeline,我正在尝试运行一个管道脚本,它位于一个非常大的git repo中。 我可以对“来自SCM的管道脚本”(使用Bitbucket)使用“轻量级签出”,这很好 但是-作业需要有一个参数BRANCH来指定从哪个分支获取作业 当我在“分支说明符”中使用“${BRANCH}”时,我得到如下结果: hudson.plugins.git.git异常:命令“git fetch--tags--progressorigin+refs/heads/${BRANCH}:refs/remotes/origin/${BRAN

我正在尝试运行一个管道脚本,它位于一个非常大的git repo中。 我可以对“来自SCM的管道脚本”(使用Bitbucket)使用“轻量级签出”,这很好

但是-作业需要有一个参数BRANCH来指定从哪个分支获取作业

当我在“分支说明符”中使用“${BRANCH}”时,我得到如下结果:

hudson.plugins.git.git异常:命令“git fetch--tags--progressorigin+refs/heads/${BRANCH}:refs/remotes/origin/${BRANCH}--prune”返回状态代码128:
标准:
stderr:fatal:找不到远程引用/heads/${BRANCH}


有没有关于如何对作为参数传递的分支的管道脚本进行轻量级签出的想法?

它清楚地表明变量分支没有被插值(如果我能够正确地得到它,分支确实是您分支的名称,并且您已经在某处定义了它)。只需检查在给定参数时是否使用单引号或双引号。我认为是前一种情况。如果是单引号,字符串不会被插值,它会尝试在命令行中查找变量,即环境变量。只需更改

'${BRANCH}'

这对我很有帮助,尽管我仍然不得不相信它确实适用于我。这个剪掉的部分更清楚一些:

                checkout([$class : 'GitSCM',
                branches : [[name : '*/' + BRANCH]],
                doGenerateSubmoduleConfigurations : false,
                extensions : [],
                gitTool : 'Default',
                submoduleCfg : [],
                userRemoteConfigs : [[
                    credentialsId : 'a1b1-e12f3-fake-key-f0f00f0e0000',
                    url : 'https://git.example.com/scm/foo/bar.git']]])

我相信您指的是管道配置中的此字段:

看起来这是一个已知的问题:


    • 这是一个已知的错误

      您可以取消选择【轻量级签出】以启用环境,我已尝试成功

                      checkout([$class : 'GitSCM',
                      branches : [[name : '*/' + BRANCH]],
                      doGenerateSubmoduleConfigurations : false,
                      extensions : [],
                      gitTool : 'Default',
                      submoduleCfg : [],
                      userRemoteConfigs : [[
                          credentialsId : 'a1b1-e12f3-fake-key-f0f00f0e0000',
                          url : 'https://git.example.com/scm/foo/bar.git']]])