当我使用参数化分支构建时,Jenkins构建失败:致命错误:找不到远程引用refs/heads/${BUILD_BRANCH}。

12

当我尝试将Jenkins作业升级为使用参数来代替硬编码值时,它不再起作用。

String parameter

尝试了多个名称,而不是BUILD_BRANCH

enter image description here 在这里,我尝试了${env.BUILD_BRANCH}、refs/heads${BUILD_BRANCH},但它们都没有起作用 enter image description here 最初我确实勾选了轻量级签出,但在阅读了许多在线答案之后我将其删除。但还是没有效果! 我只是添加了'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)

感谢您阅读,即使您无法提供帮助


请问您能否发布您的 JenkinsFile 文件吗? - Rmahajan
此外,您能解释一下如何触发此流水线吗?(例如手动操作还是通过Webhook操作)图像有所帮助,但这并不足以理解您的整个项目配置。我认为您混淆了用于不同目的的配置。 - matus
3个回答

42

您在Pipeline SCM部分选择了轻量级检出吗?取消轻量级检出对我有帮助,解决了这个问题。


2
我花了一些时间才找到选项复选框(在底部)。但是,对我来说这就是解决方法。不知道为什么这对原帖作者没用。 - steve
3
谢谢,谢谢,谢谢。我花了一个小时解决问题,即管道拒绝从特定分支构建而不失败。不确定我是否能够自己解决这个问题。如果启用“轻量级”,并且启用了分支参数,则会发出警告,这将很好。 - Kagemand Andersen
取消轻量级检出对我也解决了这个问题,好奇想知道原因。 - Ashish Karpe
它解决了我的问题。但是什么是“轻量级检出”?非常好奇。 - YoungSeon Ahn

8

取消流水线定义中的轻量级检出选项。 根据其帮助文档 -

Also build parameters will not be substituted into SCM configuration in this mode. Only selected SCM plugins support this mode.

enter image description here


2

看起来你可能混淆了配置(只凭一些图像片段很难确定)。

一方面,你正在定义一个参数(BUILD_BRANCH),以便能够指定要构建哪个分支。

另一方面,并假设第二个图像属于项目配置的管道部分,你正在尝试使用该参数来限制应使用哪个分支获取Jenkinsfile。

第二个分支在不同的工作区(不同的文件夹)中检出,仅用于获取Jenkinsfile。 即使你完全检出它,这也不意味着你将在你的工作区中拥有该分支的代码可用。

你应该做的是在管道中使用该参数,并将其提供给你的检出阶段。


有没有关于如何在管道中使用参数的提示?我们正在使用“来自SCM的管道脚本”,并且JenkinsFile已配置为全局代理(Kubernetes)。在阶段配置中,没有检出步骤...我猜它是作为代理初始化的一部分来完成的?(确实,我们看到在第一次检出JenkinsFile以获取构建参数中传递的分支时,它可以正常工作并从中拉取,但在管道运行中无法解析它) - Ben
@Ben,如果你能分享你的工作配置和Jenkinsfile,也许我们可以找到你问题的答案。不带这些信息很难说,老实说。 - matus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接