跳至主要内容

禁用或限制组织的 GitHub Actions

您可以为组织启用、禁用和限制 GitHub Actions。

谁可以使用此功能?

组织所有者可以为组织启用、禁用和限制 GitHub Actions。

关于组织的 GitHub Actions 权限

默认情况下,GitHub Actions 在所有仓库和组织中启用。您可以选择禁用 GitHub Actions 或将其限制为组织中的操作和可重用工作流。有关 GitHub Actions 的更多信息,请参阅“了解 GitHub Actions”。

您可以为组织中的所有仓库启用 GitHub Actions。启用 GitHub Actions 后,工作流能够运行位于您的仓库和任何其他公共仓库中的操作和可重用工作流。您可以为组织中的所有仓库禁用 GitHub Actions。禁用 GitHub Actions 后,您的仓库中不会运行任何工作流。

或者,您可以为组织中的所有仓库启用 GitHub Actions,但限制工作流可以运行的操作和可重用工作流。

管理组织的 GitHub Actions 权限

您可以选择为组织中的所有仓库禁用 GitHub Actions,或只允许特定仓库。您还可以限制使用公共操作和可重用工作流,以便人们只能使用组织中存在的本地操作和可重用工作流。

注意:如果您的组织由具有覆盖策略的企业管理,您可能无法管理这些设置。有关更多信息,请参阅“在企业中强制执行 GitHub Actions 的策略”。

  1. 在 GitHub 的右上角,选择您的个人资料照片,然后单击 您的组织.

  2. 在组织旁边,点击 **设置**。

  3. 在左侧边栏中,点击 **操作**,然后点击 **常规**。

  4. 在“策略”下,选择一个选项。

    如果您选择 **允许 *OWNER*,并选择非 *OWNER* 的操作和可重用工作流**,则允许组织内的操作和可重用工作流,并且有其他选项允许其他特定操作和可重用工作流。有关更多信息,请参阅“允许选择操作和可重用工作流运行”。

    当您只允许组织内的操作和可重用工作流时,策略会阻止对 GitHub 创作的所有操作的访问。例如,actions/checkout 操作将不可用。

  5. 点击 **保存**。

允许选择操作和可重用工作流运行

当您选择 **允许 *OWNER*,并选择非 *OWNER* 的操作和可重用工作流** 时,本地操作和可重用工作流将被允许,并且有其他选项允许其他特定操作和可重用工作流

注意:如果您的组织有覆盖策略或由具有覆盖策略的企业管理,您可能无法管理这些设置。有关更多信息,请参阅“禁用或限制组织的 GitHub Actions”或“在企业中强制执行 GitHub Actions 的策略”。

  • 允许 GitHub 创建的操作:您可以允许 GitHub 创建的所有操作被工作流使用。GitHub 创建的操作位于 actionsgithub 组织中。有关更多信息,请参阅 actionsgithub 组织。

  • 允许经过验证的创建者发布的 Marketplace 操作:您可以允许所有经过验证的创建者发布的 GitHub Marketplace 操作被工作流使用。当 GitHub 将操作的创建者验证为合作伙伴组织时, 在 GitHub Marketplace 中,操作旁边会显示徽章。

  • 允许指定的操作和可重用工作流:您可以限制工作流使用特定组织和存储库中的操作和可重用工作流。指定的动作不能超过 1000 个。

    要限制对操作或可重用工作流的特定标签或提交 SHA 的访问权限,请使用工作流中用于选择操作或可重用工作流的相同语法。

    • 对于操作,语法为 OWNER/REPOSITORY@TAG-OR-SHA。例如,使用 actions/[email protected] 选择标签或 actions/javascript-action@a824008085750b8e136effc585c3cd6082bd575f 选择 SHA。有关更多信息,请参阅“查找和自定义操作”。
    • 对于可重用工作流,语法为 OWNER/REPOSITORY/PATH/FILENAME@TAG-OR-SHA。例如,octo-org/another-repo/.github/workflows/workflow.yml@v1。有关更多信息,请参阅“重用工作流”。

    您可以使用 * 通配符来匹配模式。例如,要允许以 space-org 开头的组织中的所有操作和可重用工作流,您可以指定 space-org*/*。要允许以 octocat 开头的存储库中的所有操作和可重用工作流,您可以使用 */octocat**@*。有关使用 * 通配符的更多信息,请参阅“GitHub Actions 的工作流语法”。

    注意:对于 GitHub 免费版、GitHub Pro、GitHub 组织免费版或 GitHub 团队计划,允许指定的操作和可重用工作流选项仅在公共存储库中可用。

此过程演示了如何将特定操作和可重用工作流添加到允许列表中。

  1. 在 GitHub 的右上角,选择您的个人资料照片,然后单击 您的组织.
  2. 在组织旁边,点击 **设置**。
  3. 在左侧边栏中,点击 **操作**,然后点击 **常规**。
  4. 在“策略”下,选择允许 OWNER,并选择非 OWNER,操作和可重用工作流,并将所需的行动和可重用工作流添加到列表中。
  5. 点击 **保存**。

限制自托管运行器的使用

不能保证 GitHub 的自托管运行器将托管在短暂的、干净的虚拟机上。因此,它们可能会受到工作流中不受信任的代码的破坏。

同样,任何可以分叉存储库并打开拉取请求的人(通常是具有存储库读取权限的人)都可以破坏自托管运行器环境,包括获取对秘密和 GITHUB_TOKEN 的访问权限,这取决于其设置,可以授予对存储库的写入权限。尽管工作流可以使用环境和必需的审查来控制对环境秘密的访问权限,但这些工作流不会在隔离的环境中运行,并且在自托管运行器上运行时仍然容易受到相同的风险。

出于这些原因和其他原因,您可能决定阻止人们在仓库级别创建自托管运行器。

如果仓库在您禁用其使用时已经存在自托管运行器,这些运行器将以“已禁用”状态列出,并且不会分配任何新的工作流作业。

Screenshot of the "Runners" list showing a self-hosted runner with the status "Disabled."

注意:当禁用仓库级别自托管运行器的创建时,工作流仍然可以访问在企业或组织级别设置的自托管运行器。

  1. 在 GitHub 的右上角,选择您的个人资料照片,然后单击 您的组织.
  2. 在组织旁边,点击 **设置**。
  3. 在左侧边栏中,点击 **操作**,然后点击 **常规**。
  4. 在“运行器”下,使用下拉菜单选择您首选的设置
    • 所有仓库 - 自托管运行器可用于您组织中的任何仓库。
    • 选定仓库 - 自托管运行器只能用于您选择的仓库。
    • 已禁用 - 无法在仓库级别创建自托管运行器。
  5. 如果您选择选定仓库
    1. 点击 .
    2. 选中您要允许自托管运行器的仓库的复选框。
    3. 点击选择仓库

配置来自公共分支的工作流所需的批准

任何人都可以分叉公共仓库,然后提交一个拉取请求,该请求建议更改仓库的 GitHub Actions 工作流。虽然来自分叉的工作流无法访问敏感数据(如机密),但如果它们被修改用于恶意目的,它们可能会让维护者感到困扰。

为了帮助防止这种情况,来自某些外部贡献者的公共仓库拉取请求上的工作流不会自动运行,可能需要先获得批准。默认情况下,所有首次贡献者都需要批准才能运行工作流。

注意:pull_request_target事件触发的 工作流在基分支的上下文中运行。由于基分支被认为是可信的,因此由这些事件触发的 工作流将始终运行,无论批准设置如何。有关pull_request_target事件的更多信息,请参阅“触发工作流的事件”。

您可以使用以下步骤为组织配置此行为。修改此设置将覆盖在企业级别设置的配置。

  1. 在 GitHub 的右上角,选择您的个人资料照片,然后单击 您的组织.

  2. 在组织旁边,点击 **设置**。

  3. 在左侧边栏中,点击 **操作**,然后点击 **常规**。

  4. 在**从外部协作者分叉拉取请求工作流**下,选择其中一个选项。

    • **要求首次贡献者(GitHub 新用户)获得批准**。此选项要求批准才能为从未向存储库提交过代码且拥有新 GitHub 帐户的用户运行工作流。
    • **要求首次贡献者获得批准**。此选项要求批准才能为从未向存储库提交过代码的用户运行工作流。
    • **要求所有外部协作者获得批准**。此选项要求批准才能为所有非存储库协作者运行工作流。如果存储库由组织拥有,则此选项要求批准才能为所有非组织成员的存储库协作者运行工作流。
  5. 单击**保存**以应用设置。

有关批准此策略适用的工作流运行的更多信息,请参阅“批准来自公共分叉的工作流运行”。

为私有存储库分叉启用工作流

如果您依赖于使用私有存储库的分叉,则可以配置策略来控制用户如何在pull_request事件上运行工作流。此功能仅适用于私有存储库,您可以为组织或存储库配置这些策略设置。

如果组织的策略被禁用,则无法为存储库启用该策略。如果组织启用了策略,则可以为各个存储库禁用该策略。

  • **从分叉拉取请求运行工作流** - 允许用户从分叉拉取请求运行工作流,使用具有只读权限的GITHUB_TOKEN,并且无法访问秘密。
  • **将写入令牌发送到来自拉取请求的工作流** - 允许来自分叉的拉取请求使用具有写入权限的GITHUB_TOKEN
  • **将秘密发送到来自拉取请求的工作流** - 使所有秘密对拉取请求可用。
  • **要求分叉拉取请求工作流获得批准** - 来自没有写入权限的协作者的拉取请求上的工作流运行将需要具有写入权限的人员的批准才能运行。

为组织配置私有分叉策略

  1. 在 GitHub 的右上角,选择您的个人资料照片,然后单击 您的组织.
  2. 在组织旁边,点击 **设置**。
  3. 在左侧边栏中,点击 **操作**,然后点击 **常规**。
  4. 在 **Fork 拉取请求工作流程** 下,选择您的选项。
  5. 单击**保存**以应用设置。

设置组织的 GITHUB_TOKEN 权限

您可以设置授予 GITHUB_TOKEN 的默认权限。有关 GITHUB_TOKEN 的更多信息,请参阅“自动令牌身份验证”。您可以选择一组受限的权限作为默认值,或应用宽松的设置。

您可以在组织或存储库的设置中设置 GITHUB_TOKEN 的默认权限。如果您在组织设置中选择了一个限制性选项作为默认值,则在组织内存储库的设置中也会选择相同的选项,并且宽松选项将被禁用。如果您的组织属于 GitHub Enterprise 帐户,并且在企业设置中选择了更严格的默认值,则您将无法在组织设置中选择更宽松的默认值。

任何具有存储库写入权限的人员都可以通过编辑工作流文件中的 permissions 键来修改授予 GITHUB_TOKEN 的权限,根据需要添加或删除访问权限。有关更多信息,请参阅 permissions

配置默认 GITHUB_TOKEN 权限

默认情况下,当您创建一个新组织时,GITHUB_TOKEN 仅对 contentspackages 范围具有读取权限。

  1. 在 GitHub 的右上角,单击您的个人资料照片,然后单击 **您的个人资料**。

    Screenshot of the dropdown menu under @octocat's profile picture. "Your profile" is outlined in dark orange.

  2. 在 GitHub 的右上角,选择您的个人资料照片,然后单击 您的组织.

  3. 在组织旁边,点击 **设置**。

  4. 在左侧边栏中,点击 **操作**,然后点击 **常规**。

  5. 在“工作流权限”下,选择您希望 GITHUB_TOKEN 对所有范围具有读写权限(宽松设置),还是仅对 contentspackages 范围具有读取权限(限制性设置)。

  6. 单击**保存**以应用设置。

阻止 GitHub Actions 创建或批准拉取请求

您可以选择允许或阻止 GitHub Actions 工作流创建或批准拉取请求。

默认情况下,当您创建一个新组织时,工作流不允许创建或批准拉取请求。

  1. 在 GitHub 的右上角,单击您的个人资料照片,然后单击 **您的个人资料**。

    Screenshot of the dropdown menu under @octocat's profile picture. "Your profile" is outlined in dark orange.

  2. 在 GitHub 的右上角,选择您的个人资料照片,然后单击 您的组织.

  3. 在组织旁边,点击 **设置**。

  4. 在左侧边栏中,点击 **操作**,然后点击 **常规**。

  5. 在“工作流权限”下,使用 **允许 GitHub Actions 创建和批准拉取请求** 设置来配置 GITHUB_TOKEN 是否可以创建和批准拉取请求。

  6. 单击**保存**以应用设置。

管理组织的 GitHub Actions 缓存存储

组织管理员可以查看组织中所有存储库的 GitHub Actions 缓存存储。

按存储库查看 GitHub Actions 缓存存储

对于组织中的每个存储库,您可以查看存储库使用了多少缓存存储、活动缓存的数量,以及存储库是否接近总缓存大小限制。有关缓存使用和驱逐过程的更多信息,请参阅“缓存依赖项以加快工作流速度”。

  1. 在 GitHub 的右上角,单击您的个人资料照片,然后单击 **您的个人资料**。

    Screenshot of the dropdown menu under @octocat's profile picture. "Your profile" is outlined in dark orange.

  2. 在 GitHub 的右上角,选择您的个人资料照片,然后单击 您的组织.

  3. 在组织旁边,点击 **设置**。

  4. 在左侧边栏中,点击 操作,然后点击缓存

  5. 查看仓库列表以获取有关其 GitHub Actions 缓存的信息。您可以点击仓库名称以查看有关仓库缓存的更多详细信息。