Skip to main content

排查规则问题

了解如何在参与存储库工作时排查规则集问题。

谁可以使用此功能?

规则集在具有 GitHub Free 和 GitHub Free(适用于组织)的公共存储库中可用,在具有 GitHub Pro、GitHub Team 和 GitHub Enterprise Cloud 的公共和专用存储库中可用。 有关详细信息,请参阅“GitHub 的计划”。

推送规则集适用于内部存储库和专用存储库中的 GitHub Enterprise Cloud 计划、已启用推送规则集的存储库分支,以及企业中的组织。

排除故障规则集

如果无法在存储库中执行操作,并且想知道原因,可以查看针对正在使用的分支或标记的活动规则集。 有关详细信息,请参阅“管理存储库的规则集”。

根据处于活动状态的规则,可能需要先在本地编辑提交历史记录,然后才能将提交推送到远程分支。 例如,如果分支要求对提交进行签名,则可以更新签名设置,然后在本地分支上使用交互式变基,以使用已签名的提交重写 Git 历史记录。 有关详细信息,请参阅“规则集的可用规则”和“在命令行中使用 Git rebase”。

如果分支或标记是限制提交元数据的规则的目标,则当提交的部分元数据与特定模式不匹配时,你的提交可能会被拒绝。 例如,可能需要在提交消息的开头添加问题编号,或者更改尝试推送到存储库的新分支或标记的名称。 如果提交被拒绝,你将看到一条消息,告知相关元数据需要匹配的模式。 与签名提交一样,可能需要执行变基以压缩提交或单独重写每个提交。 有关详细信息,请参阅“规则集的可用规则”。

工作流程排除故障

可以在组织级别配置规则集工作流,要求工作流在合并拉取请求之前传递。 有关详细信息,请参阅“创建组织中存储库的规则集”。

打开拉取请求的规则集工作流

如果在打开拉取请求时创建规则,则所需的工作流将不会自动运行。 若要触发所需的工作流,请推送新的提交、更新分支或关闭并重新打开拉取请求。

支持的规则集工作流事件

规则集工作流支持使用 pull_requestpull_request_targetmerge_group 事件。 因此,必须在工作流 on: 部分中指定一个或多个此类事件,以便由规则集运行工作流。

为支持的事件指定的任何筛选器都会被忽略,例如,branchesbranches-ignorepathstypes 等。 工作流仅由受支持事件的默认活动类型触发,并且始终由受支持事件的默认活动类型触发。

活动默认活动类型
pull_requestopenedsynchronizereopened
pull_request_targetopenedsynchronizereopened
merge_groupchecks_requested

有关详细信息,请参阅“触发工作流的事件”。

规则集工作流不会在由 GITHUB_TOKEN 触发的事件上运行。 有关详细信息,请参阅“自动令牌身份验证”。

阻止存储库创建

由于工作流无法针对正在初始化的存储库运行,因此所需工作流还可能会阻止用户创建存储库。 要解决此问题,规则集需要将“评估”设为强制状态,或者需要由具有绕过权限的人员创建存储库并绕过分支保护。

有关强制状态和“评估”模式的详细信息,请参阅“创建存储库的规则集”。

有关旁路权限的详细信息,请参阅“关于受保护分支”。

规则集中的分支目标

验证规则集工作流是否不以存储库中的所有分支为目标。 它应该只针对所有对分支所做的所有更改都由拉取请求执行的分支。

支持的目录

验证工作流文件是否存在于 .github/workflows 目录中。 如果要对非源存储库中的存储库中的 pull_request 事件运行规则集工作流,可以执行以下任一操作:

使用 merge_group 触发器

如果存储库使用 GitHub Actions 执行所需检查 ,或者如果需要通过存储库中的拉取请求上的组织规则集要求工作流,则需要更新工作流以包含 merge_group 事件作为其他触发器。 否则在将拉取请求添加到合并队列时不会触发状态检查。 合并将失败,因为没有报告必要的状态检查。 事件 merge_group 独立于 pull_requestpush 事件。

源存储库权限

验证源存储库权限是否设置为“可从 ORGANIZATION NAME 组织中的存储库访问”。

有关详细信息,请参阅“管理存储库的 GitHub Actions 设置”。

源存储库隐私设置

验证规则集工作流文件位于源存储库中,该源存储库具有与要在其中运行它的存储库相同或更少的限制性隐私设置。 具体而言,公共工作流可以在组织中的任何存储库上运行,内部工作流可以在内部和私有存储库上运行,专用工作流可以在专用存储库上运行。 有关详细信息,请参阅“关于工作流程”。

创建新存储库的权限

若要在配置规则集工作流时创建新存储库,请确保对规则集具有绕过权限。 有关详细信息,请参阅“创建存储库的规则集”。

规则见解

GitHub 在合并拉取请求或尝试合并之前,不会记录规则见解。

并发

验证规则集工作流没有使用 cancel-in-progress 并发设置。 有关并发的详细信息,请参阅“使用并发”。