我有一个Jenkins多分支作业,从GitLab checkout 并构建代码。直到最近,它一直工作没有问题,但现在一些(但不是所有的)来自好master的分支都无法构建。Master总是构建成功。当我从GitLab的repo或通过git checkout对master进行分支时-B并推回到Gitlab,然后允许多分支作业拾取新分支,因为它无法构建分支。我从管道插件SCMBinder类中得到消息:“无法确定[分支]的确切头端翻修;返回到非确定性 checkout ”。当我在工作区中对master或slave执行git status时,Head会被分离。当我在本地git克隆代码并 checkout 分支时,一切都很好,Head也会被正确附加。此外,当我在Jenkins中使用问题分支创建一个简单的管道作业时,它构建良好,并且工作空间的检查显示连接了头部。我已经升级了Jenkins和插件,但这并没有帮助。
令人困惑的是,我从同一个master创建了一些其他分支,这些分支在同一个多分支管道作业中构建得非常好。此外,如果我对一个良好的分支进行分支,那么我在多分支管道中会遇到相同的问题。
有谁能指出哪里出了问题吗?
4条答案
按热度按时间sg3maiej1#
我也面临着类似的问题,多分支Jenkins项目。
当我点击左侧菜单中的“立即扫描多分支管道”选项时,问题得到了解决。
希望能帮上忙。
o0lyfsai2#
我找到了这个问题的答案,所以在这里回答这个问题是为了帮助别人,阻止任何人在上面浪费时间。
本质上,这是由linux/windows互操作性问题/分支命名中使用大小写的差异引起的,这转化为文件夹命名问题,因为windows不关心大小写,但GIT关心。
简单地说,我之前为问题存储库创建的第一个分支使用了一个前缀,我们将其命名为“Prefix”(带大写字母“P”)。这些分支被拉入多分支管道并构建成功。然后,我创建了一个分支,前缀为“prefix”(带小写字母“p”)。此分支在多分支管道中构建失败。
正如我们所知,Windows不关心大小写,因此不会在.git中为“prefix”创建新的文件夹结构,因为它认为它已经有一个名为“Prefix”的文件夹结构。相应的HEAD和提交信息放在原始文件结构下的“Prefix”. GIT下,然而当它试图 checkout 代码时,无法找到以“prefix”开头的分支的head/commit信息。git在“prefix”下查找commit/head细节,而不是“Prefix”,因为“Prefix”不存在,因此会导致一个分离的头。
我将在将来开始强制执行一些分支命名的语法规则,以便这种情况不会再次发生。
3pmvbmvn3#
我得到这个问题显然是因为一个Jenkins升级。我不得不(重新)创建“分支源代码”部分的 * 配置 * 来修复它。
7eumitmz4#
我也遇到过同样的问题,但是Bitbucket。对我来说,这个问题是由于使用了dev/或Dev/前缀,而Bitbucket端定义的唯一前缀是:错误修复/功能/热修复/版本/
用feature/而不是dev/测试了同一个分支,效果很好,在bitbucket中将前缀从feature/改为dev/也有效,但问题是你不能添加额外的前缀,只能更改四个已有前缀中的一个,所以我最终强制执行了一个策略,以防止人们在分支名称中使用dev/或任何其他异常前缀。