Skip to main content

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

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

谁可以使用此功能?

Enterprise accounts, organizations owned by enterprise accounts, and organizations using GitHub Team or GitHub Free plans can create and manage additional runner groups using self-hosted runners.

Note

GitHub Enterprise Server 目前不支持 GitHub 托管的运行器。 可以在 GitHub public roadmap 上查看有关未来支持计划的更多信息。

关于运行器组

要在组织和/或企业级别控制对运行器的访问权限,企业和组织所有者可以使用运行器组。运行器组用于收集运行器集,并围绕它们创建安全边界。

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

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

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

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

Warning

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

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

Note

创建运行器组时,你必须选择一个策略,用于定义哪些存储库和工作流有权访问运行器组。 若要更改哪些存储库和工作流可以访问运行器组,组织所有者可以为组织设置策略。 有关详细信息,请参阅“在企业中为 GitHub Actions 实施策略”。

所有组织都有单个默认运行器组。 组织所有者可以创建其他组织级运行器组。

如果在注册过程中未指定任何组,则运行器会自动添加到默认组。 稍后可以将运行器从默认组移动到自定义组。 有关详细信息,请参阅“将运行器移动到组”。

有关如何使用 REST API 创建运行器组的信息,请参阅“GitHub Actions 的 REST API 终结点”。

  1. 在 GitHub 上,导航到组织的主页面。

  2. 在组织名称下,单击 “设置”****。 如果看不到“设置”选项卡,请选择“”下拉菜单,然后单击“设置”********。

    组织配置文件中选项卡的屏幕截图。 “设置”选项卡以深橙色标出。

  3. 在左侧边栏中,单击 “操作”,然后单击“运行器组” 。

  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

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

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

Warning

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

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

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

如果在注册过程中未指定任何组,则运行器会自动添加到默认组。 稍后可以将运行器从默认组移动到自定义组。 有关详细信息,请参阅“将运行器移动到组”。

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

  1. 在 GitHub Enterprise Server 的右上角,单击你的个人资料照片,然后单击“企业设置”****。

    单击 GitHub Enterprise Server 上的个人资料照片时显示的下拉菜单的屏幕截图。 “企业设置”选项以深橙色边框突出显示。

  2. 在页面左侧的企业帐户边栏中,单击 策略”。

  3. 在“ 策略”下,单击“操作”。****

  4. 单击“运行器组”选项卡。

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

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

  7. 要选择组织访问策略,请选择“组织访问”下拉列表,然后单击一个策略。 您可以将运行器组配置为可供特定组织列表或企业中的所有组织访问。 默认情况下,只有私有存储库可以访问运行器组中的运行器,但您可以覆盖此操作。

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

    可以将运行器组配置为可供特定工作流列表或所有工作流访问。 如果是配置企业共享的组织运行器组,则不能覆盖此设置。 如果指定可以访问运行器组的工作流,则必须使用工作流的完整路径,包括存储库名称和所有者,并且必须将工作流固定到分支、标记或完整 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

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

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

更改可以访问运行器组的组织

Warning

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

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

对于企业中的运行器组,你可以更改企业中哪些组织可以访问运行器组。

  1. 在 GitHub Enterprise Server 的右上角,单击你的个人资料照片,然后单击“企业设置”****。

    单击 GitHub Enterprise Server 上的个人资料照片时显示的下拉菜单的屏幕截图。 “企业设置”选项以深橙色边框突出显示。

  2. 在页面左侧的企业帐户边栏中,单击 策略”。

  3. 在“ 策略”下,单击“操作”。****

  4. 单击“运行器组”选项卡。

  5. 在“组织访问”下,使用下拉菜单单击“所选组织”。

    1. 在下拉菜单右侧,单击
    2. 在弹出窗口中,使用复选框选择可以使用此运行器组的组织。
  6. 单击 “保存组”

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

Warning

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

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

对于组织中的运行器组,可以更改组织中哪些存储库可以访问运行器组。

  1. 导航到运行器组所在的组织的主页。

  2. 单击“ Settings”****。

  3. 在左侧边栏中,单击 “操作”,然后单击“运行器组” 。

  4. 在组列表中,单击要配置的运行器组。

  5. 在“存储库访问”下,使用下拉菜单单击所选组织

    1. 在下拉菜单右侧,单击
    2. 在弹出窗口中,使用复选框选择可以访问此运行器组的存储库。
  6. 单击 “保存组”

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

Warning

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

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

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

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

  1. 导航到运行器组所在的组织的主页。

  2. 单击“ Settings”****。

  3. 在左侧边栏中,单击 “操作”,然后单击“运行器组” 。

  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. 在 GitHub Enterprise Server 的右上角,单击你的个人资料照片,然后单击“企业设置”****。

    单击 GitHub Enterprise Server 上的个人资料照片时显示的下拉菜单的屏幕截图。 “企业设置”选项以深橙色边框突出显示。

  2. 在页面左侧的企业帐户边栏中,单击 策略”。

  3. 在“ 策略”下,单击“操作”。****

  4. 单击“运行器组”选项卡。

  5. 在组列表中,单击要配置的运行器组。

  6. 在“工作流访问”下,选择下拉菜单,然后单击“选定的工作流” 。

  7. 单击

  8. 输入以逗号分隔的可访问运行器组的工作流程列表。 使用完整路径,包括存储库名称和所有者。 将工作流程固定到分支、标记或完整 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

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

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

  9. 单击“ 保存”。

更改运行器组的名称

可以在企业和组织级别编辑运行器组的名称。

更改组织运行器组的名称

  1. 导航到运行器组所在的组织的主页。
  2. 单击“ Settings”****。
  3. 在左侧边栏中,单击 “操作”,然后单击“运行器组” 。
  4. 在组列表中,单击要配置的运行器组。
  5. 在“组名称”下的文本字段中输入新的运行器组名称。
  6. 单击“ 保存”。

更改企业运行器组的名称

  1. 在 GitHub Enterprise Server 的右上角,单击你的个人资料照片,然后单击“企业设置”****。

    单击 GitHub Enterprise Server 上的个人资料照片时显示的下拉菜单的屏幕截图。 “企业设置”选项以深橙色边框突出显示。

  2. 在页面左侧的企业帐户边栏中,单击 策略”。

  3. 在“ 策略”下,单击“操作”。****

  4. 单击“运行器组”选项卡。

  5. 在组列表中,单击要配置的运行器组。

  6. 在“组名称”下的文本字段中输入新的运行器组名称。

  7. 单击“ 保存”。

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

可以使用配置脚本自动向组添加新运行器。 例如,此命令会注册一个新运行器,并使用 --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. 在 GitHub 上,导航到组织的主页面。

  2. 在组织名称下,单击 “设置”****。 如果看不到“设置”选项卡,请选择“”下拉菜单,然后单击“设置”********。

    组织配置文件中选项卡的屏幕截图。 “设置”选项卡以深橙色标出。

  3. 在左侧边栏中,单击 “操作”,然后单击“运行器” 。

  4. 在“Runners(运行器)”列表中,单击您要配置的运行器。

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

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

将企业运行器移动到组

  1. 在 GitHub Enterprise Server 的右上角,单击你的个人资料照片,然后单击“企业设置”****。

    单击 GitHub Enterprise Server 上的个人资料照片时显示的下拉菜单的屏幕截图。 “企业设置”选项以深橙色边框突出显示。

  2. 在页面左侧的企业帐户边栏中,单击 策略”。

  3. 在“ 策略”下,单击“操作”。****

  4. 单击“运行器”选项卡。

  5. 在“Runners(运行器)”列表中,单击您要配置的运行器。

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

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

删除自托管运行器组

若要删除运行器组,必须首先从组中移动或删除所有运行器。

从组织中删除运行器组

  1. 导航到运行器组所在的组织的主页。
  2. 单击“ Settings”****。
  3. 在左侧边栏中,单击 “操作”,然后单击“运行器组” 。
  4. 在组列表中,在要删除的组右侧,单击
  5. 若要删除组,请单击“删除组”。
  6. 查看确认提示,然后单击“删除此运行器组”。

从企业中删除运行器组

  1. 在 GitHub Enterprise Server 的右上角,单击你的个人资料照片,然后单击“企业设置”****。

    单击 GitHub Enterprise Server 上的个人资料照片时显示的下拉菜单的屏幕截图。 “企业设置”选项以深橙色边框突出显示。

  2. 在页面左侧的企业帐户边栏中,单击 策略”。

  3. 在“ 策略”下,单击“操作”。****

  4. 单击“运行器组”选项卡。

  5. 在组列表中,在要删除的组右侧,单击

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

  7. 查看确认提示,然后单击“删除此运行器组”。

对运行器组使用唯一名称

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 ]