Jenkins多分支任务对某些分支失败

12
我有一个 Jenkins 多分支作业,它从 GitLab 检出和构建代码。 直到最近,它都在没有问题的情况下工作,但现在一些(但不是全部)来自好的主分支的分支无法构建。 Master 总是没有问题地构建。 当我从 GitLab 中的存储库或通过本地的 git checkout -b 分支 master 并将其推回 Gitlab,然后允许多分支作业获取新分支时,它无法构建它。 我从管道插件 SCMBinder 类中收到消息:“无法确定 [分支] 的确切提示修订版;退回到不确定性检出”。 当我在主分支或从机上的工作区执行 git status 时,Head 是分离的。 当我在本地 git clone 代码并检查分支时,一切正常,head 已正确连接。 此外,当我在 Jenkins 中创建一个简单的流水线作业来处理这个问题的分支时,它可以成功构建,并且检查工作空间显示 head 已连接。 我已经升级了 Jenkins 和插件,但这没有帮助。
令人困惑的是,我创建了一些其他分支,它们从同一主干创建,但在同一多分支管道作业中完美地构建。 另外,如果我分支一个好的分支,那么我就会在多分支管道中遇到相同的问题。
有人能建议出了什么问题吗?
4个回答

24
我也遇到了多分支Jenkins项目的类似问题。 当我在左侧菜单中点击“现在扫描多分支管道”选项时,问题得到解决。 希望能帮到一些人。

5
我找到了答案,现在在这里回答并帮助其他人避免浪费时间。实际上,这是由于Linux / Windows之间在分支命名中使用大小写的相互操作问题/差异引起的,这会导致文件夹命名问题,因为Windows不关心大小写但GIT是关心的。简单来说,我先前为问题仓库创建的第一个分支使用了大写“P”的前缀,我们称其为“Prefix”。这些分支被拉入多分支管道并成功构建。然后,我创建了一个具有小写“p”前缀的分支,即“prefix”分支。这个分支在多分支管道中无法构建。 正如我们所知,Windows不关心大小写,因此不会为“prefix”创建新的.git文件夹结构,它认为自己已经有一个名为“Prefix”的文件夹。适当的HEAD和提交信息被放置在“Prefix”下的原始文件结构下。GIT尝试检出代码时无法在“prefix”下找到头部/提交信息,因为它正在寻找“prefix”下的提交/头部详细信息而不是不存在的“Prefix”下的详细信息,因此结果是删除的HEAD。 将来我会开始强制执行一些语法规则,以避免再次发生这种情况。

1
感谢您发布这个跟进信息。这正是我遇到的问题和解决方案。 - smithygreg

2

我遇到了这个问题,显然是由于Jenkins升级引起的。我不得不重新创建“分支源”部分的配置来解决它。


0

我也遇到了完全相同的问题,但是是在使用Bitbucket时。 问题出现的原因是开发人员使用了dev/或Dev/前缀, 而Bitbucket中定义的唯一前缀是: bugfix/ feature/ hotfix/ release/

将相同的分支从dev/更改为feature/就可以完美解决这个问题, 同时,在Bitbucket中将前缀从feature/更改为dev/也可以解决问题,但是问题在于你不能添加额外的前缀,只能更改已经存在的四个前缀之一,所以我最终制定了一个政策,禁止人们在分支名称中使用dev/或任何其他异常前缀。


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