Skip to main content

必需工作流

可以指定哪些工作流将在组织中的所有存储库或所选存储库中作为必需状态检查运行。

谁可以使用此功能?

Because GitHub no longer supports this feature, this article is only relevant if you are already using required workflows for GitHub Actions.

Note

GitHub 不再支持 GitHub Actions 所需的工作流。 若要要求工作流在合并之前通过,请将 GitHub Enterprise Server 升级到最新版本并改用存储库规则集。

有关升级 GitHub Enterprise Server 实例的详细信息,请参阅“关于升级到新版本”。

有关存储库规则集的详细信息,请参阅“规则集的可用规则”。

概述

可以为针对任何目标分支打开的所有拉取请求配置必须在组织的存储库中运行的工作流。 使用必需工作流,可实现组织范围的 CI/CD 策略,这些策略适用于当前和未来的存储库。 必需的工作流由 pull_requestpull_request_target 默认事件触发,并显示为必需状态检查,在此情况下,在必需的工作流成功之前,无法合并拉取请求。

必需工作流与可重用工作流不同。 可重用工作流可由另一个工作流调用。 必需工作流由组织所有者在存储库上强制执行。

先决条件

在配置必需工作流之前,请注意以下先决条件:

  • 必须在组织设置中为存储库启用 GitHub Actions 才能运行必需工作流。 在组织级别启用必需工作流后,即使在存储库设置中禁用了 GitHub Actions,必需工作流也会运行。 有关管理组织存储库中的 GitHub Actions 的详细信息,请参阅“禁用或限制组织的 GitHub Actions”。
  • 必需工作流适用于组织,并且仅在组织计划支持必需状态检查的存储库中可用。 如果不支持必需状态检查,工作流仍将运行,但它不是必需检查,也不会阻止合并。 有关支持必需状态检查的详细信息,请参阅“关于受保护分支”。
  • 存储库的默认分支必须与组织的默认分支设置匹配,必需工作流才能作为必需状态检查运行。 如果默认分支名称不匹配,工作流仍将运行,但它不是必需检查。 有关管理默认分支名称的详细信息,请参阅“管理组织中仓库的默认分支名称”和“更改默认分支”。
  • 要运行必需工作流,拉取请求的源存储库必须与目标存储库位于同一组织中。 GitHub Enterprise Server 将从指定分支、标记或提交 SHA 中获取必需工作流。
  • 应在组织级别或目标存储库中创建必需工作流中使用的机密。
  • 当工作流在目标存储库中运行时,不会提取源存储库中的机密。
  • 当工作流作为必需的工作流运行时,它将忽略 on: 部分中的所有筛选器,例如:branchesbranches-ignorepathstypes 等。必需的工作流将仅针对 pull_requestpull_request_target 默认事件运行。 有关默认活动类型的详细信息,请参阅“触发工作流的事件”。
  • 即使必需的工作流自动显示为预期检查,它们也不会针对现有的拉取请求自动触发。 若要对现有的拉取请求触发必需的工作流,请将新更改推送到该拉取请求。

源存储库的限制和行为

请注意源存储库和工作流的以下限制和行为:

  • 必需工作流可以存储在任何存储库文件夹中,而不像普通工作流那样限制于 .github/workflows 文件夹。 如果必需工作流调用可重用工作流,则必须将可重用工作流存储在 .github/workflows 文件夹中。 调用可重用工作流时,必需工作流必须使用完整路径,并引用该可重用工作流。 例如,{owner}/{repo}/.github/workflows/{filename}@{ref}

  • 如果必需工作流包含在专用 或内部存储库中,则必须确保存储库中的工作流可由组织中的其他存储库访问。 有关详细信息,请参阅“管理存储库的 GitHub Actions 设置”和“管理存储库的 GitHub Actions 设置”。

  • 可以将存储在公共存储库中的工作流配置为组织中任何存储库的必需工作流。 可以将存储在专用存储库中的工作流配置为组织中其他专用存储库的必需工作流。 可以将存储在内部存储库中的工作流配置为组织中内部存储库和专用存储库的必需工作流。

  • CodeQL 需要在存储库级别进行配置,所以所需工作流不支持 CodeQL。 有关配置代码扫描的信息,请参阅“配置代码扫描的高级设置”。

  • 可以使用包含工作流文件的存储库中的任何分支、标记或提交 SHA 来引用所需的工作流。

目标存储库的限制和行为

请注意目标存储库的以下限制和行为:

  • 将必需工作流配置为在所有或所选存储库上运行时,包含必需工作流的存储库的可见性会影响组织中运行工作流的存储库。 存储在公共存储库中的必需工作流将在所有存储库上运行。 存储在专用存储库中的必需工作流将仅在其他专用存储库上运行。 存储在内部存储库中的必需工作流将在内部和专用存储库上运行。
  • 无法将必需工作流配置为在创建工作流的存储库中运行。 应考虑创建单独的存储库来存储必需工作流。
  • 将必需工作流配置为在所有或所选存储库上运行时,必需工作流不会在组织设置中禁用了其中的操作的存储库中运行。

查看必需工作流的工作流运行

在存储库中至少运行一次必需工作流后,可以在该存储库的“操作”选项卡中查看其工作流运行。若要对组织中配置为必需的工作流进行更改,必须联系组织所有者。 若要对必需工作流本身进行更改,对包含必需工作流的存储库具有写入权限的任何人都可以对其进行更改。

  1. 在 GitHub 上,导航到存储库的主页面。

  2. 在存储库名称下,单击 “操作”。

    “github/docs”存储库的选项卡的屏幕截图。 “操作”选项卡以橙色边框突出显示。

  3. 在左边栏中,可以在“必需工作流”下查看必需工作流的工作流运行。

    “Actions”页上边栏的屏幕截图。 标记为“必需工作流”的子区域包含一个名为“测试必需工作流”的条目,并用深橙色框出。

向组织添加必需工作流

组织所有者可以在其组织中配置必需工作流。 有关详细信息,请参阅“禁用或限制组织的 GitHub Actions”。