关于仓库的 GitHub Actions 权限
默认情况下,所有仓库和组织都启用了 GitHub Actions。您可以选择禁用 GitHub Actions 或将其限制为组织中的 Actions 和可重用工作流。有关 GitHub Actions 的更多信息,请参阅“编写工作流”。
您可以为您的仓库启用 GitHub Actions。启用 GitHub Actions 后,工作流能够运行位于您的仓库和任何其他公共仓库中的 Actions 和可重用工作流。您可以完全禁用仓库的 GitHub Actions。禁用 GitHub Actions 后,您的仓库中将不会运行任何工作流。
或者,您可以在您的仓库中启用 GitHub Actions,但限制工作流可以运行的 Actions 和可重用工作流。
管理仓库的 GitHub Actions 权限
您可以禁用仓库的 GitHub Actions,或设置策略来配置仓库中可以使用哪些 Actions 和可重用工作流。
注意
如果您的组织具有覆盖策略或由具有覆盖策略的企业管理,您可能无法管理这些设置。有关更多信息,请参阅“禁用或限制组织的 GitHub Actions”或“在企业中强制执行 GitHub Actions 的策略”。
-
在 GitHub 上,导航到仓库的主页。
-
在您的仓库名称下,单击 设置。如果您看不到“设置”选项卡,请选择下拉菜单,然后单击设置。
-
在左侧边栏中,单击 Actions,然后单击常规。
-
在“Actions 权限”下,选择一个选项。
如果您选择允许所有者,并选择非所有者 Actions 和可重用工作流,则允许组织内的 Actions 和可重用工作流,并且还有其他选项允许其他特定 Actions 和可重用工作流。有关更多信息,请参阅“允许选择 Actions 和可重用工作流运行”。
当您只允许组织内的 Actions 和可重用工作流时,该策略会阻止对 GitHub 编写的 Actions 的所有访问。例如,
actions/checkout
Action 将不可访问。 -
单击保存。
允许选择 Actions 和可重用工作流运行
当您选择允许所有者,并选择非所有者 Actions 和可重用工作流时,允许本地 Actions 和可重用工作流,并且还有其他选项允许其他特定 Actions 和可重用工作流。
注意
如果您的组织具有覆盖策略或由具有覆盖策略的企业管理,您可能无法管理这些设置。有关更多信息,请参阅“禁用或限制组织的 GitHub Actions”或“在企业中强制执行 GitHub Actions 的策略”。
-
允许 GitHub 创建的 Actions:您可以允许工作流使用 GitHub 创建的所有 Actions。GitHub 创建的 Actions 位于
actions
和github
组织中。有关更多信息,请参阅actions
和github
组织。 -
允许经过验证的创建者创建的 Marketplace Actions:您可以允许工作流使用经过验证的创建者创建的所有 GitHub Marketplace Actions。当 GitHub 已将 Action 的创建者验证为合作伙伴组织时,徽章将显示在 GitHub Marketplace 中 Action 旁边。
-
允许指定的 Actions 和可重用工作流:您可以限制工作流仅使用特定组织和仓库中的 Actions 和可重用工作流。指定的 Actions 数量不能超过 1000 个。
要限制对 Action 或可重用工作流的特定标签或提交 SHA 的访问,请使用工作流中用于选择 Action 或可重用工作流的相同语法。
- 对于 Action,语法为
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
开头的组织中的所有 Actions 和可重用工作流,您可以指定space-org*/*
。要允许以 octocat 开头的仓库中的所有 Actions 和可重用工作流,您可以使用*/octocat**@*
。有关使用*
通配符的更多信息,请参阅“GitHub Actions 的工作流语法”。注意
对于 GitHub Free、GitHub Pro、GitHub Free for organizations 或 GitHub Team 计划,允许指定的 Actions 和可重用工作流选项仅在公共仓库中可用。
- 对于 Action,语法为
此过程演示如何将特定 Actions 和可重用工作流添加到允许列表。
-
在 GitHub 上,导航到仓库的主页。
-
在您的仓库名称下,单击 设置。如果您看不到“设置”选项卡,请选择下拉菜单,然后单击设置。
-
在左侧边栏中,单击 Actions,然后单击常规。
-
在“Actions 权限”下,选择允许所有者,并选择非所有者 Actions 和可重用工作流并将所需的 Actions 添加到列表中。
-
单击保存。
控制公共仓库中从 fork 到工作流的更改
任何人都可以 fork 公共仓库,然后提交拉取请求,建议更改仓库的 GitHub Actions 工作流。虽然来自 fork 的工作流无法访问敏感数据(例如密钥),但如果它们被修改用于恶意目的,则可能会对维护者造成困扰。
为了帮助防止这种情况,来自某些外部贡献者的公共仓库拉取请求上的工作流将不会自动运行,可能需要首先批准。根据“批准来自贡献者的 fork 拉取请求工作流”设置,如果:
- 拉取请求由需要根据所选策略批准的用户创建。
- 拉取请求事件由需要根据所选策略批准的用户触发。
默认情况下,所有首次贡献者都需要批准才能运行工作流。
由pull_request_target
事件触发的 Workflow 在基分支的上下文中运行。由于基分支被认为是受信任的,因此由这些事件触发的 Workflow 将始终运行,而不管批准设置如何。有关pull_request_target
事件的更多信息,请参阅“触发工作流的事件”。
警告
这些工作流批准策略旨在限制可以在 GitHub Actions 运行器中执行工作流的用户集,当使用 GitHub 托管的运行器时,这些用户可能会导致意外的资源和计算消耗。如果您使用的是自托管运行器,如果允许用户绕过设置的批准策略中的批准,或者如果拉取请求已获批准,则潜在的恶意用户控制的工作流代码将自动执行。您必须考虑在您的基础设施中执行此代码的风险,并且无论使用何种批准设置,都应查看并遵循自托管运行器的安全建议。请参阅“GitHub Actions 的安全强化”。
您可以使用以下步骤配置仓库的行为。修改此设置会覆盖在组织或企业级别设置的配置。
-
在 GitHub 上,导航到仓库的主页。
-
在您的仓库名称下,单击 设置。如果您看不到“设置”选项卡,请选择下拉菜单,然后单击设置。
-
在左侧边栏中,单击 Actions,然后单击常规。
-
在批准来自贡献者的 fork 拉取请求工作流下,选择哪些用户的子集需要在运行其拉取请求上的工作流之前获得批准。将检查拉取请求作者和触发工作流的拉取请求事件的执行者,以确定是否需要批准。如果需要批准,则具有对仓库写入访问权限的用户必须批准拉取请求工作流才能运行。请参阅“批准来自公共 fork 的工作流运行”。
警告
当仅要求首次贡献者(前两个设置)批准时,任何已将任何提交或拉取请求合并到仓库的用户都不需要批准。恶意用户可以通过让维护者接受简单的错别字或其他无害的更改来满足此要求,这可能是他们自己创作的拉取请求的一部分,也可能是其他用户的拉取请求的一部分。
- 要求对 GitHub 新手首次贡献者进行批准。只有在 GitHub 上是新手并且从未将提交或拉取请求合并到此仓库的用户才需要批准才能运行工作流。
- 要求对首次贡献者进行批准。只有从未将提交或拉取请求合并到此仓库的用户才需要批准才能运行工作流。
- 要求对所有外部贡献者进行批准所有不是此仓库的成员或所有者且不是组织成员的用户都需要批准才能运行工作流。
-
单击保存以应用设置。
有关批准此策略适用的工作流运行的更多信息,请参阅“批准来自公共 fork 的工作流运行”。
为私有仓库的 fork 启用工作流
如果您依赖于使用私有仓库的分支,则可以配置策略来控制用户如何在pull_request
事件上运行工作流。此功能仅适用于私有仓库,您可以为组织或仓库配置这些策略设置。
如果组织禁用了策略,则无法为仓库启用它。
- 运行来自分支拉取请求的工作流 - 允许用户从分支拉取请求运行工作流,使用具有只读权限的
GITHUB_TOKEN
,并且无权访问密钥。 - 将写入令牌发送到来自拉取请求的工作流 - 允许来自分支的拉取请求使用具有写入权限的
GITHUB_TOKEN
。 - 将密钥发送到来自拉取请求的工作流 - 使所有密钥对拉取请求可用。
- 要求批准分支拉取请求工作流 - 对来自没有写入权限的协作者的拉取请求运行的工作流,需要具有写入权限的人员批准才能运行。
配置私有仓库的分支策略
-
在 GitHub 上,导航到仓库的主页。
-
在您的仓库名称下,单击 设置。如果您看不到“设置”选项卡,请选择下拉菜单,然后单击设置。
-
在左侧边栏中,单击 Actions,然后单击常规。
-
在分支拉取请求工作流下,选择您的选项。
-
单击保存以应用设置。
设置仓库的GITHUB_TOKEN
权限
您可以设置授予GITHUB_TOKEN
的默认权限。有关GITHUB_TOKEN
的更多信息,请参阅“自动令牌身份验证”。您可以选择一组受限的权限作为默认值,或应用宽松的设置。
默认权限也可以在组织设置中配置。如果您的仓库属于某个组织,并且在组织设置中选择了更严格的默认设置,则会在您的仓库设置中选择相同的选项,并且宽松选项将被禁用。
任何对仓库具有写入权限的用户都可以修改授予GITHUB_TOKEN
的权限,根据需要添加或删除访问权限,方法是编辑工作流文件中的permissions
键。有关更多信息,请参阅permissions
。
配置默认GITHUB_TOKEN
权限
默认情况下,当您在个人帐户中创建新仓库时,GITHUB_TOKEN
仅对contents
和packages
范围具有读取访问权限。如果您在组织中创建新仓库,则该设置将继承自组织设置中配置的内容。
-
在 GitHub 上,导航到仓库的主页。
-
在您的仓库名称下,单击 设置。如果您看不到“设置”选项卡,请选择下拉菜单,然后单击设置。
-
在左侧边栏中,单击 Actions,然后单击常规。
-
在“工作流权限”下,选择您是否希望
GITHUB_TOKEN
对所有权限具有读写访问权限(宽松设置),或者仅对contents
和packages
权限具有读取访问权限(受限设置)。 -
单击保存以应用设置。
阻止GitHub Actions创建或批准拉取请求
您可以选择允许或阻止GitHub Actions工作流创建或批准拉取请求。
默认情况下,当您在个人帐户中创建新仓库时,工作流不允许创建或批准拉取请求。如果您在组织中创建新仓库,则该设置将继承自组织设置中配置的内容。
-
在 GitHub 上,导航到仓库的主页。
-
在您的仓库名称下,单击 设置。如果您看不到“设置”选项卡,请选择下拉菜单,然后单击设置。
-
在左侧边栏中,单击 Actions,然后单击常规。
-
在“工作流权限”下,使用允许GitHub Actions创建和批准拉取请求设置来配置
GITHUB_TOKEN
是否可以创建和批准拉取请求。 -
单击保存以应用设置。
允许访问私有仓库中的组件
私有仓库中的操作和可重用工作流可以与同一用户或组织拥有的其他私有仓库共享。有关私有仓库的信息,请参阅“关于仓库”。
您可以使用以下步骤配置私有仓库中的操作和可重用工作流是否可以从仓库外部访问。有关更多信息,请参阅“共享来自私有仓库的操作和工作流”和“与您的组织共享操作和工作流”。或者,您可以使用REST API来设置或获取访问级别的详细信息。有关更多信息,请参阅“GitHub Actions权限的REST API端点”和“GitHub Actions权限的REST API端点”。
管理私有仓库的访问权限
-
在GitHub上,导航到私有仓库的主页。
-
在您的仓库名称下,单击 设置.
-
在左侧边栏中,单击 Actions,然后单击常规。
-
在访问下,选择一个访问设置
- 不可访问 - 其他仓库中的工作流无法访问此仓库。
- 可从“用户名”用户拥有的仓库访问 - 同一用户拥有的其他仓库中的工作流可以访问此仓库中的操作和可重用工作流。仅允许从私有仓库访问。
-
单击保存以应用设置。
管理组织中私有仓库的访问权限
-
在GitHub上,导航到私有仓库的主页。
-
在您的仓库名称下,单击 设置.
-
在左侧边栏中,单击 Actions,然后单击常规。
-
在访问下,选择一个访问设置
- 不可访问 - 其他仓库中的工作流无法访问此仓库。
- 可从“组织名称”组织中的仓库访问 - 作为“组织名称”组织一部分的其他仓库中的工作流可以访问此仓库中的操作和可重用工作流。仅允许从私有仓库访问。
-
单击保存以应用设置。
配置仓库中GitHub Actions工件和日志的保留期
您可以配置仓库中GitHub Actions工件和日志的保留期。
默认情况下,工作流生成的工件和日志文件会在自动删除之前保留90天。您可以根据仓库类型调整保留期。
- 对于公共仓库:您可以将此保留期更改为1天到90天之间。
- 对于私有仓库:您可以将此保留期更改为1天到400天之间。
当您自定义保留期时,它仅适用于新的工件和日志文件,不会追溯应用于现有对象。对于托管的仓库和组织,最长保留期不能超过管理组织或企业的限制。
您还可以为工作流创建的特定工件定义自定义保留期。有关更多信息,请参阅“删除工作流工件”。
设置仓库的保留期
-
在 GitHub 上,导航到仓库的主页。
-
在您的仓库名称下,单击 设置。如果您看不到“设置”选项卡,请选择下拉菜单,然后单击设置。
-
在左侧边栏中,单击 Actions,然后单击常规。
-
在工件和日志保留下,输入一个新值。
-
单击保存以应用更改。