您可以将可重用的工作流程与 OIDC 结合使用,以标准化您的部署步骤并加强其安全性。

您可以创建一个可重用的工作流程来执行部署步骤,而不是将部署作业从一个工作流程复制并粘贴到另一个工作流程。 如果可重用工作流满足“重新使用工作流”中所述的访问要求之一,则可以由另一个工作流使用。

应熟悉“重新使用工作流”和“关于使用 OpenID Connect 进行安全强化”中所述的概念。

与 OpenID Connect (OIDC) 结合使用时,可重用工作流程可让您在存储库、组织或企业中实施一致的部署。 为此,可以基于可重用工作流程在云角色上定义信任条件。 可用选项因云提供商而异:

为了创建基于可重用工作流的信任条件,云提供商必须支持 job_workflow_ref 的自定义声明。 这允许您的云提供商确定作业最初来自哪个存储库。

自定义令牌声明:

在工作流程运行期间,GitHub 的 OIDC 提供商会向云提供商提供一个 OIDC 令牌,其中包含有关作业的信息。 如果该作业是可重用工作流的一部分,则令牌将包括包含有关调用工作流的信息的标准声明,并且还将包括一个名为 job_workflow_ref 的自定义声明,其中包含有关被调用工作流的信息。

例如,以下 OIDC 令牌适用于作为被调用工作流程一部分的作业。 workflow、ref 及其他属性描述调用方工作流,而 job_workflow_ref 指被调用的工作流:

如果可重用工作流程执行部署步骤,则它通常需要访问特定的云角色,并且您可能希望允许组织中的任何存储库调用该可重用工作流程。 若要允许这样做,您将创建允许任何存储库和任何调用方工作流程的信任条件,然后筛选组织和被调用的工作流程。 有关一些示例,请参阅下一节。

您可以配置自定义声明,以筛选特定存储库中的任何可重用工作流程。 在此示例中,工作流运行必须源自在 octo-org/octo-automation 存储库的可重用工作流中定义的作业,以及由 octo-org 组织拥有的任何存储库中定义的作业。