GitHub Actions有哪些策略?
企业策略控制企业成员使用 GitHub Actions 时可用的选项。
如果不强制实施企业策略,则具有“管理组织操作策略”权限的组织所有者和用户对其组织拥有完全控制权。GitHub Actions
注意
必须为组织中的仓库启用 GitHub Actions,CodeQLcode scanning 默认设置和 GitHub Code Quality 工作流才能运行。 但是, CodeQL 默认设置 code scanning 不受其他 GitHub Actions 策略的影响(例如限制对公共操作或可重用工作流的访问)。
实施策略
- 在 GitHub Enterprise Server 的右上角,单击你的个人资料头像,然后单击“Enterprise settings”****。
- 在页面顶部,单击“ 策略”。
- 在“ Policies”下,单击“Actions”****。
- 配置每个策略后,单击“保存”****。
有关“策略”页面每个部分的更多信息,请继续阅读。
策略
在“策略”部分中,可以控制企业内哪些组织可以使用 GitHub Actions以下选项:
- 为所有组织启用 GitHub Actions
- 启用 GitHub Actions 以用于特定组织
- 对所有组织禁用GitHub Actions
注意
如果禁用 GitHub Actions或未为一个或多个组织启用该功能,则这会阻止受影响的组织使用 code scanning 和分析 GitHub Code Quality 。
控制对公共操作
企业通常希望限制对一组经过良好测试的公共操作 的访问,作为供应链治理的一部分。 GitHub 中提供的策略可让您在控制访问的同时,不会阻止 code scanning 和 GitHub Code Quality 使用的动态工作流。
您可以使用以下选项实施严格控制,而无需为 code scanning 和 GitHub Code Quality 定义例外情况或额外配置。
-
允许所有操作和可重用工作流,而不管作者是谁或定义它的位置。
-
允许企业操作 : 只能使用企业内存储库中定义的操作 。
-
允许选择操作____:可以使用企业中存储库中定义的任何操作 ,以及与指定条件匹配的任何操作 。
-
要求操作固定到完整长度的提交 SHA:所有操作必须固定到完整长度的提交 SHA 才能使用。 这包括来自贵企业的操作以及由 GitHub 创建的操作。 有关详细信息,请参阅“安全使用指南”。
允许选择操作____
如果选择此选项,则允许企业中的操作 ,并且有以下选项用于允许其他操作:
-
允许由 GitHub 创建的操作: 允许所有由 GitHub 创建、位于
actions和github组织中的操作。 -
允许来自经验证创作者的 Marketplace 操作: 允许所有由经验证创作者创建且标有 标签的 GitHub Marketplace 操作。
仅在已启用 GitHub Connect 并使用 GitHub Actions 进行了配置时可用。 请参阅 使用 GitHub Connect 启用对 GitHub.com操作的自动访问。
-
允许 或阻止 指定的操作: 允许指定的操作 。 可以指定单个操作 ,或者整个组织和存储库。
指定操作时,请使用以下语法:
- 若要限制对特定标记的访问或提交操作的 SHA,请使用工作流中使用的相同语法来选择操作。
- 对于操作,语法为
OWNER/REPOSITORY@TAG-OR-SHA。 例如,使用actions/javascript-action@v1.0.1选择标记或使用actions/javascript-action@a824008085750b8e136effc585c3cd6082bd575f选择 SHA。
- 对于操作,语法为
- 要指定模式,请使用通配符
*。- 若要允许名称以
space-org开头的组织中的所有操作,请使用space-org*/*。 - 若要允许名称以 octocat 开头的仓库中的所有操作,请使用
*/octocat**@*。
- 若要允许名称以
- 要指定多个模式,请使用
,分隔各个模式。- 若要允许来自
octocat和octokit组织的所有操作,请使用octocat/*, octokit/*。
- 若要允许来自
- 要阻止特定模式,请使用
!前缀。- 若要允许组织中的所有操作
space-org,但阻止特定操作,例如space-org/action,使用space-org/*, !space-org/action@*。 - 默认情况下,仅允许列表中指定的操作 。 若要允许所有操作 同时阻止特定操作,请使用
*, !space-org/action@*。
- 若要允许组织中的所有操作
策略永远不会限制对运行器文件系统上本地操作的访问(即 uses: 路径以 ./ 开头的情况)。
运行器
默认情况下,任何对存储库拥有管理员访问权限的人都可以为该存储库添加自托管运行器,而自托管运行器存在以下风险:
- 无法保证自托管运行器托管在临时、干净的虚拟机上。 因此,工作流中不受信任的代码可能会危及它们。
- 任何能够复刻存储库并发起拉取请求的人都可能危及自托管运行器环境,潜在获取机密和
GITHUB_TOKEN的访问权限,而其可能对存储库拥有写入权限。
在“运行器”部分,你可以通过禁用存储库级自托管运行器的使用来缓解这些风险。
注意
禁止创建存储库级自托管运行器后,工作流仍可访问企业或组织级别的自托管运行器。
禁用标准托管运行器
您可以在企业层面禁用由 GitHub 托管的标准运行器。 此设置要求工作流通过运行器组将运行器指定为目标,并有助于强制执行一致的访问控制和治理策略。
有关 GitHub 托管的运行器的作业并发限制信息,请参阅 Actions 限制。
- 在 GitHub Enterprise Server 的右上角,单击你的个人资料头像,然后单击“Enterprise settings”****。
- 在页面顶部,单击“ 策略”。
- 在“ Policies”下,单击“Actions”****。
- 滚动到“标准托管运行器”部分,然后单击对所有组织禁用。
- 单击“ 保存”。
自定义映像
在“自定义映像”部分中,可以控制允许企业中的组织使用以下访问策略创建和管理自定义映像:
- 为所有组织启用:所有组织(包括将来创建的任何组织)都可以使用或创建自定义映像。
- 为特定组织启用:只有选定的组织可以使用或创建自定义映像。
- 对所有组织禁用:任何组织都无法使用或创建自定义映像。
自定义映像保留策略
可以定义自定义映像版本的保留时间以及它们变为非活动状态的时间。
- 每个映像的最大版本数:限制保留每个映像的版本数。 超过此限制后,将自动删除最早未使用的映像版本。
- 默认值:20 个版本
- 可配置的范围:1-100 个版本
- 未使用的版本保留:删除未使用指定天数的映像版本。 分配给运行器池但未实际使用的映像版本也被视为未使用。
- 默认值:30 天
- 可配置范围:1-90 天
- 最大版本期限:禁用早于指定天数创建的映像版本。 在策略限制提高之前,运行器无法使用禁用的映像版本。
- 默认值:60 天
- 可配置的范围:7-90 天
项目、日志和缓存设置
这些策略控制项目、日志和缓存的存储。
项目和日志保留期
默认情况下,工作流生成的项目和日志文件保留 90 天。 可以将此保留期更改为 1 到 400 天之间的任意位置。
更改仅适用于新的项目和日志文件。
最大和默认缓存大小限制
默认情况下:
- GitHub Actions 在外部存储上为 你的 GitHub Enterprise Server 实例 使用的缓存存储总量限制为每个存储库最多 10 GB。
- 可为存储库设置的最大允许大小为 25 GB。
如果超过此限制,GitHub 将保存新缓存,但会开始收回缓存,直到总大小小于存储库限制。
你可以自定义每个存储库的默认总缓存大小和允许的最大总缓存大小。 例如,你可能希望每个存储库的默认总缓存大小为 5 GB,但同时允许管理员为单个存储库配置最大 15 GB 的总缓存大小。
组织所有者可以设置更低的总缓存大小,适用于其组织中的每个存储库。 对存储库拥有管理员访问权限的人可以为其存储库设置总缓存大小,最高不超过企业或组织策略设置允许的最大缓存大小。
专用存储库中的分支拉取请求工作流
你可以控制用户如何在专用和内部存储库的 pull_request 事件上运行工作流。
- 运行来自分支拉取请求的工作流。 用户可以运行来自分支拉取请求的工作流。 默认情况下,工作流将使用具有只读权限的
GITHUB_TOKEN,无权访问机密。 - 向来自拉取请求的工作流发送写入令牌。 工作流将使用具有写入权限的
GITHUB_TOKEN。 - 向来自拉取请求的工作流发送机密。 所有机密都可供该拉取请求使用。
- 要求分支拉取请求工作流获得批准。 来自没有写入权限的协作者的拉取请求上的工作流需要获得具有写入权限的人员的批准才能运行。
如果为企业启用了某个策略,可以在单个组织或存储库中选择性禁用该策略。 如果为企业禁用了某个策略,则单个组织或存储库无法启用该策略。
工作流权限
在“工作流权限”部分中,可以设置授予 **** 的GITHUB_TOKEN权限。
-
读取和写入权限:
GITHUB_TOKEN的默认权限取决于企业或组织的创建时间:- 2023 年 2 月 2 日或之后创建 – 所有范围默认为只读访问权限。
- 2023 年 2 月 2 日之前创建 – 所有范围默认为读写访问权限。
-
读取存储库内容和包权限: 默认情况下,
GITHUB_TOKEN仅对contents和packages范围拥有读取权限。 更宽松的设置不能选为单个组织或存储库的默认设置。
任何对存储库拥有写入权限的人仍然可以通过编辑工作流文件中的 GITHUB_TOKEN 键,修改授予 permissions 的特定工作流权限。
默认情况下,已禁用允许 GitHub Actions 创建和批准拉取请求。 如果启用此设置,GITHUB_TOKEN 可以创建和批准拉取请求。