当前位置: 首页 > 知识库问答 >
问题:

Jenkins多分支作业对于某些分支失败

陆洛城
2023-03-14

我有一份Jenkins Multi-branch的工作,从GitLab签出并构建代码。直到最近,它还可以正常工作,但现在一些(但不是全部)来自优秀大师的分支无法构建。大师总是建造没有问题。当我从GitLab中的repo或通过git checkout-b本地分支master并推回到GitLab,然后允许多分支作业拾取新分支时,它无法构建它。我从管道插件SCMBinder类得到消息:“无法确定[branch]的确切尖端版本;返回到不确定的签出”。当我在主服务器或从服务器的工作区中执行git状态时,头部被分离。当我git在本地克隆代码并签出分支时,一切都很好,头部也正确连接。此外,当我用问题分支在Jenkins中创建一个简单的管道作业时,它构建得很好,并且检查工作区时会显示连接头。我已经升级了Jenkins和插件,但这没有帮助。

令人困惑的是,我有一些其他分支是从同一个主节点创建的,它们在同一个多分支管道作业中构建得非常好。如果我分支了一个好的分支,那么在多分支管道中也会遇到同样的问题。

有人能告诉我出了什么问题吗?

共有3个答案

田兴朝
2023-03-14

我得到这个问题显然是因为Jenkins升级。我必须(重新)创建配置的“分支源”部分来修复它。

龙俭
2023-03-14

我找到了答案,所以在这里回答它是为了帮助别人,阻止任何人在上面浪费时间。

本质上,这是由linux/windows互操作性问题/分支命名中大小写的使用差异引起的,这转化为文件夹命名问题,因为windows不关心大小写,但GIT关心。

简而言之,我之前为我使用前缀的问题存储库创建的第一个分支让我们将其称为带有大写“P”的“前缀”。这些分支被拉入多分支管道并构建OK。然后,我创建了一个前缀为“前缀”并带有小写“p”的分支。该分支未能在多分支管道中构建。

正如我们所知,Windows不关心大小写,因此不会在. git中为“前缀”创建新的文件夹结构,因为它认为它已经有一个名为“前缀”的文件夹结构。适当的HEAD和提交信息放在“前缀”下的原始文件结构下。但是,当GIT尝试签出代码时,它找不到以“前缀”开头的分支的头/提交信息,因为它正在. git中查找“前缀”下的提交/头详细信息,而不是不存在的“前缀”,因此会导致分离的头。

我将在将来开始强制执行一些分支命名的语法规则,这样就不会再次发生这种情况。

苏胤
2023-03-14

对于多分支Jenkins项目,我也面临类似的问题。

当我单击左侧菜单中的“立即扫描多分支管道”选项时,问题得到了解决。

希望它能帮助一些人。

 类似资料:
  • 对于一个新项目,我想使用Jenkins CI的新管道功能。我们的Git存储库中有几个分支,应该以同样的方式进行测试。它还应该自动跟踪和处理新的分支。因此,我创建了一个多分支管道作业。但它的配置有两个问题: 1) 为了被Jenkins标记为有效,分行需要一个“Jenkinsfile”。如果这不存在,詹金斯将忽略该分支。有没有办法标记与模式匹配的所有分支,而不需要在其中包含此文件? 2) 每个分支都应

  • 问题内容: 有没有办法告诉詹金斯(2.2)删除已删除分支的作业?目前,由于未删除作业,因此我的构建监视器填充了分支。是否有设置可以触发此行为,还是应该将其记录为错误? 问题答案: 由于您使用的是最新的Jenkins版本,请考虑将作业切换到多分支管道设置。 工作流多分支功能(由工作流插件提供)提供以下关键功能: 在仓库中,每个新分支都会在Jenkins中自动创建工作流(作业)(假设Webhook已从

  • 是否有可能通过一个作业DSL创建多分支管道作业,该作业通过“管道脚本”而不是每个Git存储库包含的Jenkinsfile来定义作业? 我们希望避免在100个Git存储库中生成和维护相同的Jenkins文件(除了一些参数)。 目前,我们正在使用管道作业和工厂作业播种的作业DSL,但目前我们在多分支构建(功能分支)方面受到限制。因此,我们希望切换到多分支管道作业,但在播种方面我们受到了限制。 我知道我

  • 问题内容: 我正在尝试让詹金斯(Jenkins)的多分支管道工作来以类似于分支的方式构建标签。在Jenkins 2.73(不确定何时添加功能)中,可以将Multibranch项目配置为从源存储库中检索分支和标签。最初,我认为这将非常适合我的需求(我的Jenkinsfile现在可以在Jenkins的同一位置进行开发或生产构建)。 配置了标签发现的多分支作业 我已经使用脚本管道成功构建并运行了构建过程

  • 我有一个场景,但我有两个项目(a和B),都在Jenkins中配置了多分支管道作业,问题是项目B依赖于项目a。 所以我发现有时候当我在项目A中签入代码时,我也需要在项目A构建后构建项目B。现在,在我开始调查管道构建之前,我将每个分支都有一个作业,然后在Jenkins中为相应的分支触发项目B的适当作业。 我想在Jenkins文件中设置什么,这样当ProjectA/develop执行时,它就会触发Pro

  • null null 我怎样才能想象这些工作类型之间的关系?还有其他插件支持这些类型吗?