Skip to main content

使用规则集在企业中强制实施代码治理

可以创建一个规则集,以将企业中的多个存储库作为目标。

谁可以使用此功能?

Enterprise owners

简介

Note

企业代码规则集目前为公共预览版,可能会更改。

可以创建规则集来控制用户如何与企业内存储库中的代码进行交互。 您可以:

  • 创建分支或标记规则集以控制谁可以将提交推送到特定分支以及提交的格式必须如何设置,或者谁可以删除或重命名标记。
  • 创建推送规则集来阻止对专用或内部存储库的推送,以及对存储库整个分支网络的推送。 推送规则集允许根据文件扩展名、文件路径长度、文件和文件夹路径,以及文件大小阻止推送。

若要了解详细信息,请参阅 关于规则集

导入预生成的规则集

若要导入 GitHub 创建的预生成规则集,请参阅 github/ruleset-recipes

可以使用 JSON 文件导入现有规则集。 如果要将相同规则集应用于多个存储库或组织,这种方法很有用。 有关详细信息,请参阅“管理组织中存储库的规则集”。

如何定义规则集的应用位置?

规则集可用于灵活地将要应用规则的组织、存储库和分支作为目标。

  • 若要以组织为目标,可以选择所有组织、从列表中选择,或使用 fnmatch 语法定义组织名称的动态模式。 有关语法详细信息,请参阅“创建存储库的规则集”。
  • 在这些组织内,可以将所有存储库作为目标或按自定义属性将动态列表作为目标。 请参阅“管理组织中存储库的自定义属性”。
  • 在存储库内,可以将特定分支或标记作为目标:所有分支、默认分支或使用 fnmatch 语法的动态列表。

创建以存储库中的分支作为目标的规则集时,存储库管理员无法再重命名目标存储库中的分支或更改默认分支。 如果他们具有适当的权限,则仍可以创建和删除分支。

如何控制提交的格式?

在分支或标记规则集中,可以添加用于限制提交元数据格式的规则,例如提交消息或作者电子邮件。

如果选择 “必须匹配给定的正则表达式模式”限制,则可以使用正则表达式语法来定义元数据必须匹配或不得匹配的模式。 有关语法详细信息和示例,请参阅 创建存储库的规则集

使用规则集强制实施状态

创建或编辑规则集时,可以使用强制状态来配置规则集的强制实施方式。

可以为规则集选择以下任何强制状态。

  • 活动:规则集创建后便会强制实施。****
  • 评估:不会强制执行规则集,但你将能够在“规则见解”页面上监控哪些操作会或不会违反规则。****
  • 已禁用:不会强制实施或评估规则集。****

使用“评估”模式是在不强制执行规则集的情况下测试规则集的绝佳选择。 可以使用“规则见解”页查看贡献是否违反了规则。 有关详细信息,请参阅“管理存储库的规则集”。

创建分支或标签规则集

  1. 在 GitHub 的右上角,单击你的个人资料照片。

  2. 根据环境,单击“你的企业”,或单击“你的企业”,然后单击要查看的企业********。

  3. 在页面左侧的企业帐户边栏中,单击 策略”。

  4. 在“Policies”下,单击 Code

  5. 单击“添加规则集”。****

  6. 若要创建面向分支的规则集,请单击“新建分支规则集”。 或者,若要创建针对标签的规则集,请单击“新建标签规则集”****。

  7. 在“规则集名称”下,键入规则集的名称。

  8. (可选)若要更改默认强制实施状态,请单击 “已禁用”**** 并选择强制实施状态。 有关强制状态的详细信息,请参阅关于规则集

为分支或标签规则集授予旁路权限

可以授予特定角色、团队或应用绕过权限以及批准规则集的绕过请求的功能。

以下项符合绕过访问的条件:

  • 存储库管理员、组织所有者和企业所有者
  • 维护或写入角色,或部署密钥。
  1. 若要授予规则集的绕过权限,请在“Bypass list”部分中,单击 Add bypass

  2. 在显示的“添加绕过”模式对话框中,搜索要授予绕过权限的角色、团队或应用,然后从“建议”部分选择角色、团队或应用,然后单击“添加所选”。

  3. (可选)若要向执行组件授予旁路权限,而不允许它们直接推送到存储库,请在“始终允许”右侧单击 ,然后单击“仅针对拉取请求”****。

    现在,选择的执行组件需要打开拉取请求才能对存储库进行更改,从而创建其拉取请求和审核日志更改的清晰痕迹。 然后,参与者可以选择绕过任何分支保护,以及合并该拉取请求。

在企业中选择要作为目标的组织

选择所有组织、从现有组织中选择一个组织或按名称设置动态列表。 如果使用 Enterprise Managed Users,还可以选择企业中用户拥有的所有仓库为目标仓库。

如果设置动态列表,将使用 fnmatch 语法添加一个或多个命名模式。 例如,字符串 *open-source 将匹配名称以 open-source 结尾的任何组织。 有关语法详细信息,请参阅“创建存储库的规则集”。

在企业中选择要作为目标的存储库

在所选组织内,可以将所有存储库作为目标或按自定义属性将动态列表作为目标。 请参阅“管理组织中存储库的自定义属性”。

选择要作为目标的分支或标签

若要定位分支或标记,在“目标分支”或“目标标记”部分,选择“添加目标”****,然后选择包含或排除分支或标记的方式。 可以使用 fnmatch 语法基于模式包含或排除分支或标记。 有关详细信息,请参阅“使用 fnmatch 语法”。

可以将多个目标条件添加到同一规则集。 例如,可以包含默认分支,包含与模式 *feature* 匹配的任何分支,然后专门排除与模式 not-a-feature 匹配的分支。

选择分支或标记保护

在“分支保护”或“标记保护”部分中,选择要包含在规则集中的规则。 选择规则时,可以输入规则的其他设置。 有关规则的详细信息,请参阅“规则集的可用规则

添加元数据限制

元数据限制应旨在提高存储库中提交之间的一致性。 它们不是要取代安全措施(例如要求通过拉取请求进行代码评审)。

Note

如果 Squash 合并分支,该分支上的所有提交都必须满足基础分支的任何元数据要求。

  1. 若要添加用于控制提交元数据或分支名称的规则,请在创建或编辑规则集时在“限制”部分单击“限制提交元数据”或“限制分支名称”********。

  2. 配置限制的设置,然后单击“添加”****。 可以向同一规则集添加多个限制。

  3. 若要匹配指定正则表达式模式,请在“要求”下拉列表中选择“必须与指定正则表达式模式匹配”****。

    对于大多数要求(如“必须从匹配模式开始”),输入的模式按字面解释,不支持通配符。 例如,* 字符仅表示文本 * 字符。

    对于更复杂的模式,可以选择“必须匹配给定的正则表达式模式”或“不能匹配给定的正则表达式模式”,然后使用正则表达式语法来定义匹配模式。 有关详细信息,请参阅“关于适用于提交元数据的正则表达式”。

    查看存储库规则集的任何人都可以看到你提供的说明。

  4. (可选)在制定具有元数据限制的规则集之前,可以为规则集选择“评估”强制状态,以测试任何元数据限制的影响,而不会影响参与者。 有关元数据限制的详细信息,请参阅“规则集的可用规则”。

完成分支或标签规则集和后续步骤

单击“创建****”即可完成规则集的创建。 如果规则集的强制执行状态设置为“活动”,规则集会立即生效。

可以查看规则集的见解,了解规则如何影响参与者。 如果强制执行状态设置为“评估”,则可以看到规则集处于活动状态时已经传递或失败的操作。 有关规则集见解的详细信息,请参阅“管理存储库的规则集”。

创建推送规则集

Note

此规则集将强制实施存储库整个分支网络的推送限制。

可以为企业中的专用或内部存储库创建推送规则集。

  1. 在 GitHub 的右上角,单击你的个人资料照片。
  2. 根据环境,单击“你的企业”,或单击“你的企业”,然后单击要查看的企业********。
  3. 在左侧边栏中的“Policies”部分,单击 Code
  4. 单击“添加规则集”。****
  5. 单击 New push ruleset
  6. 在“规则集名称”下,键入规则集的名称。
  7. (可选)若要更改默认强制状态,请单击 Disabled 并选择强制状态。 有关强制状态的详细信息,请参阅 关于规则集

为推送规则集授予旁路权限

Note

针对存储库的推送规则集的旁路权限将由此存储库的整个分支网络继承。 这意味着,在此存储库的整个分支网络中,唯一可以绕过此规则集的用户是在根存储库中可以绕过此规则集的用户。

可以授予特定角色、团队或应用绕过权限以及批准规则集的绕过请求的功能。 以下项符合绕过访问的条件:

  • 存储库管理员、组织所有者和企业所有者
  • 维护或写入角色,或部署密钥
  1. 若要授予规则集的绕过权限,请在“Bypass list”部分中,单击 Add bypass
  2. 在显示的“添加绕过”模式对话框中,搜索要授予绕过权限的角色、团队或应用,然后从“建议”部分选择角色、团队或应用,然后单击“添加所选”。

在企业中选择要作为目标的组织

选择所有组织、从现有组织中选择一个组织或按名称设置动态列表。 如果使用 Enterprise Managed Users,还可以选择企业中用户拥有的所有仓库为目标仓库。

如果设置动态列表,将使用 fnmatch 语法添加一个或多个命名模式。 例如,字符串 *open-source 将匹配名称以 open-source 结尾的任何组织。 有关语法详细信息,请参阅“创建存储库的规则集”。

在企业中选择要作为目标的存储库

在所选组织内,可以将所有存储库作为目标或使用自定义属性将动态列表作为目标。 请参阅“管理组织中存储库的自定义属性”。

选择推送保护

你可以阻止对此存储库以及对此存储库整个分支网络的推送,具体取决于文件扩展名、文件路径长度、文件和文件夹路径以及文件大小。

配置的任何推送保护都会阻止此存储库中的推送,并在此存储库的整个分支网络中阻止推送。

  1. 在“推送保护”下,单击你要应用的限制。 然后填写你所选限制的详细信息。

    对于文件路径限制,你可以使用部分路径或完整路径。 可以为此使用 fnmatch 语法。 例如,针对 test/demo/**/* 的限制可阻止对 test/demo/ 目录中的文件或文件夹进行任何推送。 针对 test/docs/pushrules.md 的限制可阻止对 pushrules.md 目录中 test/docs/ 文件的专门推送。 有关详细信息,请参阅“创建存储库的规则集”。

完成推送规则集和后续步骤

单击“创建****”即可完成规则集的创建。 如果规则集的强制执行状态设置为“活动”,规则集会立即生效。

可以查看规则集的见解,了解规则如何影响参与者。 如果强制执行状态设置为“评估”,则可以看到规则集处于活动状态时已经传递或失败的操作。 有关规则集见解的详细信息,请参阅“管理存储库的规则集”。