Skip to main content

治理人员如何在企业中使用仓库

创建仓库策略来控制谁可以执行创建和删除仓库等操作。

谁可以使用此功能?

Enterprise owners

Note

仓库策略目前为 公共预览版,可能随时更改。

若要控制仓库生命周期中的关键事件(例如谁可以创建或删除仓库),可以创建仓库策略。 仓库策略是一系列限制,可让你灵活控制影响的用户和目标仓库。

在仓库策略中,可以限制:

  • 允许哪些可见性用于新仓库和可见性变更****。
  • 谁可以创建仓库****。
  • 谁可以删除仓库****。
  • 谁可以从组织中转移仓库****。
  • 人员如何命名仓库****。

Tip

如果你是组织所有者,则可以为特定组织创建仓库策略****。 请参阅“治理人员如何在组织中使用仓库”。

示例

可以使用仓库策略执行以下操作:

  • 确保所有新仓库都使用特定的命名约定,例如 kebab-case
  • 防止删除仓库(组织管理员除外)。
  • 只允许在企业的“开放源代码”组织中创建公共仓库。
  • 防止将公共仓库更改为专用仓库,以避免潜在的元数据丢失。

我如何确定目标仓库?

首先,你将确定企业中的目标组织。 可以选择所有组织、从列表中选择,或使用 fnmatch 语法创建动态规则。 如果使用 Enterprise Managed Users,还可以选择企业中用户拥有的所有仓库为目标仓库。

然后,你将确定所选组织中的目标仓库。 建议在使用仓库策略的同时使用自定义仓库属性****。 通过为仓库添加自定义属性,你就能在策略中灵活地确定这些目标仓库。

例如,可以添加一个属性来标记包含生产数据或其他敏感信息的仓库,然后阻止任何人公开这些仓库。

若要创建和设置自定义属性,请参阅“管理组织中存储库的自定义属性”。

与其他策略的交互

一些可用的限制与你在组织或企业设置中的“Member privileges”页面设置的策略重复。

创建仓库策略不会覆盖现有的“成员特权”策略****。 相反,这些策略是相加的,因此适用的是最严格的策略版本。 这既适用于成员特权策略,也适用于人员在企业或组织级创建的其他仓库策略********。

与成员特权策略相比,仓库策略具有几个优点:

  • 它们可以更灵活地确定目标组织和仓库。
  • 它们可以让某些行为者选择绕过策略。
  • 组织所有者都能看到它们,因此允许的内容更加透明。
  • 它们允许你选择 Enterprise Managed Users 拥有的仓库为目标仓库。

创建仓库策略

  1. 在 GitHub 的右上角,单击你的个人资料照片。
  2. 根据环境,单击“你的企业”,或单击“你的企业”,然后单击要查看的企业********。
  3. 在页面左侧的企业帐户边栏中,单击 策略”。
  4. 在“Policies”下,单击“Repository”****。
  5. 单击“新建策略”。
  6. 配置新策略,然后单击“Create”。**** 有关帮助,请参阅以下小节。

策略名称

用描述性的语言来表达策略的目的。 组织所有者可以查看策略,因此好的名称有助于提高清晰度。 例如:Prevent public repos on production

执法状况

如果不想在创建时执行策略,请设置为“Disabled”。 否则设置为“Active”。

允许列表

选择哪些角色和团队可以绕过此策略中的限制****。

目标

选择策略适用于哪些组织和仓库。

目标组织

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

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

目标仓库

选择所选组织中的哪些仓库(当前或将来)为目标仓库。 可以选择所有仓库或按自定义属性设置动态列表。

策略

选择包含哪些限制。 当策略处于活动状态时,这些限制适用于所有目标仓库,但允许列表中的用户或团队可以绕过这些限制。

如果选择“限制名称”策略,则必须使用正则表达式语法来设置仓库名称必须匹配或不得匹配的模式****。 例如,执行 kebab-case 命名的模式看起来像 ^([a-z][a-z0-9]*)(-[a-z0-9]+)*$

  • 模式支持 RE2 语法。 请参阅 Google 的语法指南
  • 若要验证表达式,请单击“Test pattern”,然后输入模式和测试值****。

其他阅读材料

若要为仓库管理设置其他策略,请参阅“在企业中实施仓库管理策略”。