Skip to main content
我们经常发布文档更新,此页面的翻译可能仍在进行中。 有关最新信息,请访问英语文档

使用组管理对自托管运行程序的访问

您可以使用策略来限制对已添加到组织或企业的自托管运行器的访问。

有关如何将作业路由到特定组中的运行器的信息,请参阅“选择作业的运行器”。

关于运行器组

运行器组用于控制对组织和企业级运行器的访问。 企业所有者可以配置访问策略,用于控制企业中哪些组织和工作流可以访问运行器组。 组织所有者可以配置访问策略,用于控制组织中哪些存储库和工作流可以访问运行器组。

当企业所有者授予对运行器组的访问权限时,组织所有者可以看到组织的运行器设置中列出的运行器组。 然后,组织所有者可以为企业运行器组分配更精细的存储库和工作流访问策略。

新运行器在创建时,将自动分配给默认组。 运行器每次只能在一个组中。 您可以将运行器从默认组移到另一组。 有关详细信息,请参阅“将运行器移动到组”。

为组织创建自托管的运行器组

警告:建议仅将自托管运行器用于私有仓库。 这是因为,通过创建在工作流中执行代码的拉取请求,公共存储库的分支可能会在自托管运行器计算机上运行危险代码。

有关详细信息,请参阅“关于自托管运行程序”。

所有组织都有单个默认运行器组。 企业帐户中的组织可以创建其他组。 组织管理员可以允许单个仓库访问运行器组。 有关如何使用 REST API 创建运行器组的信息,请参阅“操作”。

运行器在创建时会自动分配给默认组,并且每次只能成为一个组的成员。 您可以将运行器从默认组移到您创建的任何组。

创建组时,你必须选择一个策略,用于定义哪些存储库和工作流有权访问运行器组。

  1. 在 GitHub.com 上,导航到组织的主页。 1. 在组织名称下,单击“设置”。

    组织设置按钮 1. 在左侧边栏中,单击“操作”,然后单击“运行器组” 。

  2. 在“运行器组”部分,单击“新建运行器组”。

  3. 为运行器组输入名称。

  4. 分配存储库访问策略。

    您可以将运行器组配置为可供特定的存储库列表或组织中的所有存储库访问。 默认情况下,只有私有存储库可以访问运行器组中的运行器,但您可以覆盖此操作。 如果配置企业共享的组织的运行组,则不能覆盖此设置。

  5. 分配用于工作流访问的策略。

    可以将运行器组配置为可供特定工作流列表或所有工作流访问。 如果是配置企业共享的组织运行器组,则不能覆盖此设置。 如果指定可以访问运行器组的工作流,则必须使用工作流的完整路径,包括存储库名称和所有者,并且必须将工作流固定到分支、标记或完整 SHA。 例如:octo-org/octo-repo/.github/workflows/build.yml@v2, octo-org/octo-repo/.github/workflows/deploy.yml@d6dc6c96df4f32fa27b039f2084f576ed2c5c2a5, monalisa/octo-test/.github/workflows/test.yml@main

    只有直接在所选工作流程中定义的作业才能访问运行器组。组织拥有的运行器组无法访问企业中其他组织的工作流;相反,你必须创建企业拥有的运行器组。 1. 单击“创建组”以创建组并应用策略。

为企业创建自托管运行器组

警告:建议仅将自托管运行器用于私有仓库。 这是因为,通过创建在工作流中执行代码的拉取请求,公共存储库的分支可能会在自托管运行器计算机上运行危险代码。

有关详细信息,请参阅“关于自托管运行程序”。

企业可以将其运行器添加到组以进行访问管理。 企业可以创建运行器组,这些组可供企业帐户中的特定组织或特定工作流访问。 然后,组织所有者可以为企业运行器组分配更精细的存储库和工作流访问策略。 有关如何使用 REST API 创建运行器组的信息,请参阅 GitHub Actions REST API 中的企业终结点。

运行器在创建时会自动分配给默认组,并且每次只能成为一个组的成员。 您可以在注册过程中将运行器分配给特定组,也可以稍后将运行器从默认组移到自定义组。

创建组时,必须选择用于定义哪些组织有权访问运行器组的策略。

  1. 在 GitHub.com 的右上角,单击你的个人资料照片,然后单击“你的企业”。 GitHub Enterprise Cloud 上个人资料照片下拉菜单中的“你的企业”

  2. 在企业列表中,单击您想要查看的企业。

  3. 在企业帐户边栏中,单击“ 策略”。 1. 在“ 策略”下,单击“操作”。 1. 单击“运行器组”选项卡。

  4. 单击“新建运行器组”。

  5. 在“组名称”下,键入运行器组的名称。

  6. 若要选择组织访问的策略,请选择“组织访问”下拉列表,然后单击一个策略。 您可以将运行器组配置为可供特定组织列表或企业中的所有组织访问。

    添加运行器组选项

  7. 分配用于工作流访问的策略。

    可以将运行器组配置为可供特定工作流列表或所有工作流访问。 如果是配置企业共享的组织运行器组,则不能覆盖此设置。 如果指定可以访问运行器组的工作流,则必须使用工作流的完整路径,包括存储库名称和所有者,并且必须将工作流固定到分支、标记或完整 SHA。 例如:octo-org/octo-repo/.github/workflows/build.yml@v2, octo-org/octo-repo/.github/workflows/deploy.yml@d6dc6c96df4f32fa27b039f2084f576ed2c5c2a5, monalisa/octo-test/.github/workflows/test.yml@main

    只有直接在所选工作流程中定义的作业才能访问运行器组。

  8. 单击“保存组”以创建组并应用策略。

更改自托管运行器组的访问策略

警告:建议仅将自托管运行器用于私有仓库。 这是因为,通过创建在工作流中执行代码的拉取请求,公共存储库的分支可能会在自托管运行器计算机上运行危险代码。

有关详细信息,请参阅“关于自托管运行程序”。

对于企业中的运行器组,你可以更改企业中可以访问运行器组的组织或限制运行器组可以运行的工作流。 对于组织中的运行器组,你可以更改组织中可以访问运行器组的存储库或限制运行器组可以运行的工作流。

更改可以访问运行器组的组织或存储库

  1. 导航到运行器组所在的位置:

    • 在组织中:导航到主页并单击“设置” 。

    • 如果使用的是企业级组:

      1. 在 GitHub.com 的右上角,单击你的个人资料照片,然后单击“你的企业”。 GitHub Enterprise Cloud 上个人资料照片下拉菜单中的“你的企业”

      2. 在企业列表中,单击您想要查看的企业。

  2. 导航到“运行器组”设置:

    • 在组织中:

      1. 在左侧边栏中,单击“操作”,然后单击“运行器组” 。
    • 如果使用的是企业级组:

      1. 在企业帐户边栏中,单击“ 策略”。 1. 在“ 策略”下,单击“操作”。 1. 单击“运行器组”选项卡。 1. 在组列表中,单击要配置的运行器组。
  3. 对于企业中的运行器组,在“组织访问”下,修改可以访问运行器组的组织。 对于组织中的运行器组,在“存储库访问”下,修改可以访问运行器组的存储库。

  4. 在“设置”页的“运行器”部分,单击要配置的运行器组旁边的 ,然后单击“编辑名称和 [组织|存储库] 访问权限”。 管理存储库权限

  5. 修改策略选项。

    警告

    建议仅将自托管运行器用于私有仓库。 这是因为,通过创建在工作流中执行代码的拉取请求,公共存储库的分支可能会在自托管运行器计算机上运行危险代码。

    有关详细信息,请参阅“关于自托管运行程序”。

更改可以访问运行器组的工作流程

可以将运行器组配置为运行选定工作流或所有工作流。 例如,可以使用此设置来保护存储在运行器上的机密,或者通过将运行器组限制为仅运行特定的可重用工作流来标准化部署工作流。 如果配置企业共享的组织的运行组,则不能覆盖此设置。

  1. 导航到运行器组所在的位置:

    • 在组织中:导航到主页并单击“设置” 。

    • 如果使用的是企业级组:

      1. 在 GitHub.com 的右上角,单击你的个人资料照片,然后单击“你的企业”。 GitHub Enterprise Cloud 上个人资料照片下拉菜单中的“你的企业”

      2. 在企业列表中,单击您想要查看的企业。

  2. 导航到“运行器组”设置:

    • 在组织中:

      1. 在左侧边栏中,单击“操作”,然后单击“运行器组” 。
    • 如果使用的是企业级组:

      1. 在企业帐户边栏中,单击“ 策略”。 1. 在“ 策略”下,单击“操作”。 1. 单击“运行器组”选项卡。 1. 在组列表中,单击要配置的运行器组。
  3. 在“工作流访问”下,选择下拉菜单,然后单击“选定的工作流” 。

  4. 单击

  5. 输入以逗号分隔的可访问运行器组的工作流程列表。 使用完整路径,包括存储库名称和所有者。 将工作流程固定到分支、标记或完整 SHA。 例如:octo-org/octo-repo/.github/workflows/build.yml@v2, octo-org/octo-repo/.github/workflows/deploy.yml@d6dc6c96df4f32fa27b039f2084f576ed2c5c2a5, monalisa/octo-test/.github/workflows/test.yml@main

    只有直接在所选工作流程中定义的作业才能访问运行器组。

    组织拥有的运行器组无法访问企业中其他组织的工作流程。相反,您必须创建企业拥有的运行器组。

  6. 单击“ 保存”。

更改运行器组的名称

  1. 导航到运行器组所在的位置:

    • 在组织中:导航到主页并单击“设置” 。

    • 如果使用的是企业级组:

      1. 在 GitHub.com 的右上角,单击你的个人资料照片,然后单击“你的企业”。 GitHub Enterprise Cloud 上个人资料照片下拉菜单中的“你的企业”

      2. 在企业列表中,单击您想要查看的企业。

  2. 导航到“运行器组”设置:

    • 在组织中:

      1. 在左侧边栏中,单击“操作”,然后单击“运行器组” 。
    • 如果使用的是企业级组:

      1. 在企业帐户边栏中,单击“ 策略”。 1. 在“ 策略”下,单击“操作”。 1. 单击“运行器组”选项卡。 1. 在组列表中,单击要配置的运行器组。
  3. 更改运行器组名称。

  4. 在“设置”页的“运行器”部分,单击要配置的运行器组旁边的 ,然后单击“编辑名称和 [组织|存储库] 访问权限”。 管理存储库权限

  5. 更改运行器组名称。

自动向组添加自托管运行器

可以使用配置脚本自动向组添加新运行器。 例如,此命令会注册一个新运行器,并使用 --runnergroup 参数将其添加到名为 rg-runnergroup 的组。

./config.sh --url $org_or_enterprise_url --token $token --runnergroup rg-runnergroup

如果运行器组不存在,命令将失败:

Could not find any self-hosted runner group named "rg-runnergroup".

将自托管的运行器移动到组

如果在注册过程中没有指定运行器组,新运行器会自动分配到默认组,然后可以移到另一个组。

  1. 导航到运行器注册的位置:

    • 在组织中:导航到主页并单击“ 设置” 。

    • 如果使用的是企业级运行器:

      1. 在 GitHub.com 的右上角,单击你的个人资料照片,然后单击“你的企业”。 GitHub Enterprise Cloud 上个人资料照片下拉菜单中的“你的企业”

      2. 在企业列表中,单击您想要查看的企业。

  2. 导航到 GitHub Actions 设置:

    • 在组织中:

      1. 在左侧边栏中,单击“操作”,然后单击“运行器”。
    • 如果使用的是企业级运行器:

      1. 在企业帐户边栏中,单击“ 策略”。 1. 在“ 策略”下,单击“操作”。 1. 单击“运行器”选项卡。
  3. 在“Runners(运行器)”列表中,单击您要配置的运行器。

  4. 选择“运行器组”下拉列表。

  5. 在“Move runner to group(将运行器移动到组)”中,选择运行器的目的地组。

删除自托管运行器组

运行器在其组被移除时将自动返回到默认组。

  1. 导航到运行器组所在的位置:

    • 在组织中:导航到主页并单击“设置” 。

    • 如果使用的是企业级组:

      1. 在 GitHub.com 的右上角,单击你的个人资料照片,然后单击“你的企业”。 GitHub Enterprise Cloud 上个人资料照片下拉菜单中的“你的企业”

      2. 在企业列表中,单击您想要查看的企业。

  2. 导航到“运行器组”设置:

    • 在组织中:

      1. 在左侧边栏中,单击“操作”,然后单击“运行器组” 。
    • 如果使用的是企业级组:

      1. 在企业帐户边栏中,单击“ 策略”。 1. 在“ 策略”下,单击“操作”。 1. 单击“运行器组”选项卡。
  3. 在组列表中,在要删除的组右侧,单击

  4. 若要删除组,请单击“删除组”。

  5. 查看确认提示,然后单击“删除此运行器组”。 此组中的任何运行器都会自动移动到默认组,在该组中它们会继承分配给该组的访问权限。

对运行器组使用唯一名称

GitHub Actions 要求运行器组名称在组织级别必须唯一。 这意味着组织将无法再创建与企业中的运行器组同名的运行器组。 此外,用户将在与企业中的组共享相同名称的任何运行器组上看到警告横幅,建议重命名组织组。

为了避免混淆,如果组织和企业中存在重复的运行器组,工作流将失败。 若要解决此问题,可以重命名组织或企业中的某个运行器组,也可以更新工作流文件以向运行器组名称添加前缀:

  • org/organization/
  • ent/enterprise/

示例:使用前缀区分运行器组

例如,如果组织中有一个名为 my-group 的运行器组,企业中有另一个名为 my-group 的运行器组,则可以更新工作流文件以使用 org/my-groupent/my-group 来区分这两者。

使用 org/

runs-on:
  group: org/my-group
  labels: [ self-hosted, label-1 ]

使用 ent/

runs-on:
  group: ent/my-group
  labels: [ self-hosted, label-1 ]