use*_*311 3 head jenkins multibranch-pipeline
我有一个 Jenkins 多分支作业,可以从 GitLab 检出并构建代码。直到最近它都可以正常工作,但现在一些(但不是全部)来自好主的分支无法构建。Master 总是可以毫无问题地构建。当我从 GitLab 中的 repo 或通过本地 git checkout -b 分支 master 并推回到 Gitlab 然后允许多分支作业获取新分支时,它无法构建它。我从管道插件 SCMBinder 类收到消息:“无法确定 [branch] 的确切最新修订;退回到不确定性结帐”。当我在 master 或 slave 的工作区中执行 git status 时,Head 已分离。当我在本地 git clone 代码并签出分支时,一切都很好,并且头部已正确连接。此外,当我在 Jenkins 中创建一个带有问题分支的简单管道作业时,它构建正常,并且对工作区的检查显示附加了头部。我已经升级了 Jenkins 和插件,但这并没有帮助。
令人困惑的是,我从同一个 master 创建了一些其他分支,它们在同一个多分支管道作业中构建得非常好。此外,如果我分支一个好的分支,那么我在多分支管道中会遇到同样的问题。
任何人都可以建议出了什么问题吗?
我找到了这个问题的答案,所以在这里回答它是为了帮助其他人并阻止任何人在这上面浪费时间。
\n\n本质上,这是由 linux/windows 互操作性问题/分支命名中使用大小写的差异引起的,这会转化为文件夹命名问题,因为 Windows 不关心大小写,但 GIT 关心。
\n\n简而言之,我之前为问题存储库创建的第一个分支使用前缀,我们将其称为“前缀”,并带有大写“P”。\n这些分支被拉入多分支管道并构建正常。\n然后,我创建了一个带有前缀“prefix”和小写“p”的分支。该分支未能在多分支管道中构建。
\n\n我们知道 Windows 不关心大小写,因此不会在 .git 中为“前缀”创建新的文件夹结构,因为它认为它已经有一个名为 \xe2\x80\x9cPrefix\xe2\x80\x9d 的文件夹结构。\n相应的 HEAD提交信息放在 \xe2\x80\x9cPrefix\xe2\x80\x9d 下的原始文件结构下。\nGIT 但是,当它尝试签出代码时,找不到以“前缀”开头的分支的头/提交信息正在 .git 中查找“前缀”下的提交/头详细信息,而不是“前缀”,因为“前缀”不存在,因此会导致分离的头。
\n\n我将在将来开始强制执行一些分支命名的语法规则,以便这种情况不会再次发生。
\n 归档时间: |
|
查看次数: |
2862 次 |
最近记录: |