多分支管道作业未显示打开的拉取请求

Posted

技术标签:

【中文标题】多分支管道作业未显示打开的拉取请求【英文标题】:Multibranch pipeline job not showing open pull requests 【发布时间】:2017-09-24 23:08:14 【问题描述】:

我在 Jenkins 中配置了一个多分支管道作业,链接到我们的 GitHub 存储库,它运行良好,将检查状态反馈到我们 GitHub 中的拉取请求,以便我们知道分支是否适合合并。

我没有看到针对 Jenkins 中的 Job 列出的任何打开的拉取请求:

我们还安装了 Blue Ocean 插件,也没有显示任何 PR。

有人知道为什么会这样吗?我是否缺少另一个插件\配置?

【问题讨论】:

我也有同样的问题。 Scan Repository 确实检测到拉取请求,但没有创建作业。我尝试了@burnettk 的建议,但没有成功。检测到拉取请求 - 我在“扫描存储库日志”中看到它 - 但没有创建作业。 【参考方案1】:

我也有这个问题。我尝试了乔伊的建议,但没有奏效。我发现如果您将PR-.+(或PR-* 作为通配符)添加到您的正则表达式过滤器以包含分支,则拉取请求会“神奇地”出现。发现此文档here。令人沮丧的是,这个插件的“官方”文档没有解释这一点(至少从我能找到的稀疏文档中)。我的项目的有效配置在这里:

我不确定这是否是在此用例中使用此插件的推荐方法,但 Jenkins 似乎从来没有足够的文档。

【讨论】:

re 神奇的常量词 PR-*,它不是我们分支的名称,也不是 github 的 url 名称,我找到了这个解释:“PR 的名称(它将始终是 PR-... 除非 SCMSource 对其更改请求概念使用不同的前缀(眨眼))”在 2.2.4 版的更改日志上(2017 年 11 月 2 日)wiki.jenkins.io/display/JENKINS/SCM+API+Plugin 谢谢!这就是我喜欢***的原因。很明显,当然还有第二个魔术标识符列表,它只对应于 Bitbucket 上的内部拉取请求 ID。事后看来如此明显。你刚刚为我减轻了很多痛苦! 在我的情况下,添加 PR-* 正则表达式不适用于某些管道。删除过滤器本身会让 PR 显示在列表中。这只是仅供参考。我不鼓励这条路。 我使用了 Bitbucket Branch Source Plugin,结果我不得不在 Branch Sources > Add > Discover other refs 中添加 pull-requests/*/from,如果您使用的是 Filter by name (with regular expression),那么您将不得不追加|pull-requests-.* 给它。【参考方案2】:

我遇到了同样的问题。但是这次在 Blue Ocean UI 中如下所示

修复是在作业级别从使用 Git 切换到 GitHub 分支源并配置 GitHub 分支源。作业类型是多分支管道。

【讨论】:

当我试图回答的问题的上下文在同一篇文章中时,为什么我要创建一个全新的问题?此外,我最终回答了我自己的问题,所以我真的没有必要删除我的帖子。 你为什么要创建一个全新的问题?因为它一个全新的问题。这绝对不是答案。但是现在您已经编辑了答案,一切都很好 作者的修复与我的修复相同。因此,修复程序应包含在此处。否则,我们只是在创建重复项,哈哈。另外,如果我们可以将图像发布到 cmets 中,那就太好了。 我在蓝海也遇到了这个问题。我使用扫描 github 组织的“GitHub 组织”类型创建了作业。除了拉取请求页面,其他一切都有效。你还需要安装 github pull request builder 插件吗? 是的,当它为我工作时,我肯定也安装了该插件。同样,唯一的问题是作业级别配置【参考方案3】:

一个可能的原因是 GitHub 由于防火墙而无法直接连接到 Jenkins。如果 GitHub 从未将状态检查报告为已完成,则很可能是这种情况,换句话说,它会永远挂起。

在这种情况下,轮询是一个简单的解决方案。转到http://_jenkins_ip_:8080/job/_job_name_/configure 并选择“扫描存储库触发器”选项卡。勾选“如果不运行,则定期运行”复选框并选择一个间隔。我还有 15 分钟的时间。

第一次完成时,应该立即进行扫描,并且应该检测到拉取请求,否则,可能会发生其他事情。检查作业的“扫描存储库日志”页面,因为它可能包含有用的信息。

顺便说一句,我没有安装“GitHub Pull Request Builder Plugin”,因为页面上说它存在安全问题。相反,正在使用“GitHub 分支源插件”。安装了一些其他相关插件:

Git client plugin
Git plugin
GitHub API Plugin
GitHub Authentication plugin
GitHub Integration Plugin
GitHub plugin

我也在使用 Blue Ocean,但这不是必需的,它只是提供了不同的 UI。

【讨论】:

【参考方案4】:

我知道这是一个老话题,但我在尝试从 Bitbucket 可视化我的拉取请求时遇到了同样的问题,我希望这个答案能帮助其他有需要的人。就我而言,我使用的是 Bitbucket Push and Pull Request Plugin,它与 Jenkins 的其他 GitHub 插件非常相似。 我的问题来自于我在 Branch Sources >> Add Source 部分选择了 Git 而不是 Bitbucket。我怀疑在这种情况下也发生了同样的事情,其中​​ GitGitHub 两个选项更容易混淆。

【讨论】:

以上是关于多分支管道作业未显示打开的拉取请求的主要内容,如果未能解决你的问题,请参考以下文章

如何将来自其他分支的未合并上游拉取请求应用到我的分支中?

VSTS GitHub拉取请求触发器未触发

如何为 lint 和运行测试的拉取请求编写管道

如何在 Azure DevOps 的拉取请求中显示构建状态

如何通过 Bitbucket 中的拉取请求变基

还原合并的拉取请求