当我使用参数化分支时,Jenkins 无法构建:致命:找不到远程引用 refs/heads/${BUILD_BRANCH}
Jenkins fails to build when I use a parameterised branch: fatal: Couldn't find remote ref refs/heads/${BUILD_BRANCH}
一旦我尝试升级我的 Jenkins 作业以使用分支参数而不是硬编码值,它就不再有效。
除了BUILD_BRANCH
之外,还尝试过许多其他名字
我在这里尝试了 ${env.BUILD_BRANCH}、refs/heads${BUILD_BRANCH} 并且绝对 none 有效
当我最初这样做时,我确实检查了轻量级结帐,在阅读了许多有相同问题的人的在线答案后,我将其删除。依然没有!。我刚刚添加了 'wipe' 命令以查看是否有帮助,但没有
错误:
> git rev-list --no-walk 97428a402f3304a21ccc8df435a40468ebf406c1 # timeout=10
Running in Durability level: MAX_SURVIVABILITY
[Pipeline] Start of Pipeline
[Pipeline] readTrusted
[Pipeline] End of Pipeline
hudson.plugins.git.GitException: Command "git fetch --tags --progress --prune -- origin +refs/heads/${BUILD_BRANCH}:refs/remotes/origin/${BUILD_BRANCH}" returned status code 128:
stdout:
stderr: fatal: Couldn't find remote ref refs/heads/${BUILD_BRANCH}
fatal: The remote end hung up unexpectedly
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:2429)
感谢您的阅读,即使您帮不上忙
您似乎在混合配置(很难确定,仅共享的图片片段)。
一方面,您正在定义一个参数 (BUILD_BRANCH) 以能够指定应该构建哪个分支。
在另一个方面,假设第二个图像属于项目配置的管道部分,您正试图使用该参数来限制应该用于获取 Jenkinsfile 的分支。
第二个分支在不同的工作区(不同的文件夹)中签出,仅用于获取 Jenkinsfile。即使您对其进行了全面检查,也不意味着您的工作区中将拥有该分支的代码。
您应该做的是在您的管道上使用该参数并将其提供给您的结帐阶段。
您是否在管道 SCM 部分选择了轻量级结帐?取消选中轻量级结帐为我解决了这个问题。
一旦我尝试升级我的 Jenkins 作业以使用分支参数而不是硬编码值,它就不再有效。
除了BUILD_BRANCH
之外,还尝试过许多其他名字错误:
> git rev-list --no-walk 97428a402f3304a21ccc8df435a40468ebf406c1 # timeout=10
Running in Durability level: MAX_SURVIVABILITY
[Pipeline] Start of Pipeline
[Pipeline] readTrusted
[Pipeline] End of Pipeline
hudson.plugins.git.GitException: Command "git fetch --tags --progress --prune -- origin +refs/heads/${BUILD_BRANCH}:refs/remotes/origin/${BUILD_BRANCH}" returned status code 128:
stdout:
stderr: fatal: Couldn't find remote ref refs/heads/${BUILD_BRANCH}
fatal: The remote end hung up unexpectedly
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:2429)
感谢您的阅读,即使您帮不上忙
您似乎在混合配置(很难确定,仅共享的图片片段)。
一方面,您正在定义一个参数 (BUILD_BRANCH) 以能够指定应该构建哪个分支。
在另一个方面,假设第二个图像属于项目配置的管道部分,您正试图使用该参数来限制应该用于获取 Jenkinsfile 的分支。
第二个分支在不同的工作区(不同的文件夹)中签出,仅用于获取 Jenkinsfile。即使您对其进行了全面检查,也不意味着您的工作区中将拥有该分支的代码。
您应该做的是在您的管道上使用该参数并将其提供给您的结帐阶段。
您是否在管道 SCM 部分选择了轻量级结帐?取消选中轻量级结帐为我解决了这个问题。