Skip to main content

Using larger runners

GitHub offers larger runners with more RAM and CPU.

より大きなランナー 機能は、GitHub Team または GitHub Enterprise Cloud プランを使用している Organization やエンタープライズでは現在ベータ版で、これは今後変わる可能性があります。 ベータ版の使用を求める場合には、サインアップ ページにアクセスします。

Overview of より大きなランナーs

In addition to the standard GitHub-hosted runners, GitHub also offers customers on GitHub Team and GitHub Enterprise Cloud plans a range of より大きなランナーs with more RAM and CPU. These runners are hosted by GitHub and have the runner application and other tools preinstalled.

When より大きなランナーs are enabled for your organization, a default runner group is automatically created for you with a set of four pre-configured より大きなランナーs.

When you add a より大きなランナー to an organization, you are defining a type of machine from a selection of available hardware specifications and operating system images. GitHub will then create multiple instances of this runner that scale up and down to match the job demands of your organization, based on the autoscaling limits you define.

Machine specs for より大きなランナーs

Size (vcpu)Memory (GB)Storage (SSD)
4 cores16 RAM150 GB
8 cores32 RAM300 GB
16 cores64 RAM600 GB
32 cores128 RAM1200 GB
64 cores256 RAM2040 GB

Architectural overview of より大きなランナーs

The より大きなランナーs are managed at the organization level, where they are arranged into groups that can contain multiple instances of the runner. They can also be created at the enterprise level and shared with organizations in the hierarchy. Once you've created a group, you can then add a runner to the group and update your workflows to target either the group name or the label assigned to the より大きなランナー. You can also control which repositories are permitted to send jobs to the group for processing. For more information about groups, see "Controlling access to より大きなランナーs."

In the following diagram, a class of hosted runner named ubuntu-20.04-16core has been defined with customized hardware and operating system configuration.

Diagram explaining より大きなランナー

  1. Instances of this runner are automatically created and added to a group called grp-ubuntu-20.04-16core.
  2. The runners have been assigned the label ubuntu-20.04-16core.
  3. Workflow jobs use the ubuntu-20.04-16core label in their runs-on key to indicate the type of runner they need to execute the job.
  4. GitHub Actions checks the runner group to see if your repository is authorized to send jobs to the runner.
  5. The job runs on the next available instance of the ubuntu-20.04-16core runner.

Autoscaling より大きなランナーs

Your より大きなランナーs can be configured to automatically scale to suit your needs. When jobs are submitted for processing, more machines can be automatically provisioned to run the jobs, until reaching a pre-defined maximum limit. Each machine only handles one job at a time, so these settings effectively determine the number of jobs that can be run concurrently.

During the runner deployment process, you can configure the Max option, which allows you to control your costs by setting the maximum parallel number of machines that are created in this set. A higher value here can help avoid workflows being blocked due to parallelism.

Networking for より大きなランナーs

By default, より大きなランナーs receive a dynamic IP address that changes for each job run. Optionally, GitHub Enterprise Cloud customers can configure their より大きなランナーs to receive a static IP address from GitHub's IP address pool. When enabled, instances of the より大きなランナー will receive an address from a range that is unique to the runner, allowing you to use this range to configure a firewall allowlist. You can use up to 10 static IP address ranges for the より大きなランナーs created at the enterprise level. In addition, you can use up to 10 static IP address ranges for the より大きなランナーs created at the organization level, for each organization in your enterprise.

Note: If runners are unused for more than 30 days, their IP address ranges are automatically removed and cannot be recovered.

Planning for より大きなランナーs

Create a runner group

Runner groups are used to collect sets of virtual machines and create a security boundary around them. You can then decide which organizations or repositories are permitted to run jobs on those sets of machines. During the より大きなランナー deployment process, the runner can be added to an existing group, or otherwise it will join a default group. You can create a group by following the steps in "Controlling access to より大きなランナーs."

Understanding billing

Note: The より大きなランナーs do not use included entitlement minutes, and are not free for public repositories.

Compared to standard GitHub-hosted runners, より大きなランナーs are billed differently. For more information, see "Per-minute rates".

Adding a より大きなランナー to an enterprise

You can add より大きなランナーs to an enterprise, where they can be assigned to multiple organizations. The organization admins can then control which repositories can use the runners. To add a より大きなランナー to an enterprise, you must be an enterprise owner.

使用可能なオプションのリストから、オペレーティング システムとハードウェア構成を選ぶことができます。 このランナーの新しいインスタンスが自動スケーリングによってデプロイされると、ここで定義したオペレーティング システムとハードウェア構成が使用されます。

また、ランナーを識別するラベルを定義することもできます。これは、処理のためにワークフローを使ってランナーにジョブを送信する方法です (runs-on を使います)。 新しいランナーが既定のグループに自動的に割り当てられるか、ランナー作成プロセス中にランナーを結合する必要があるグループを選ぶことができます。 また、ランナーを登録した後で、ランナーのグループ メンバーシップを変更できます。 詳しくは、「より大きなランナーへのアクセスの制御」を参照してください。

  1. GitHub.com の右上の自分のプロファイル写真をクリックし、 [自分の Enterprise] をクリックします。 GitHub Enterprise Cloud のプロファイル写真のドロップダウン メニューの [自分の Enterprise]

  2. Enterpriseのリストで、表示したいEnterpriseをクリックしてください。 自分の Enterprise のリストの Enterprise の名前

  3. Enterprise サイドバーで、 [ポリシー] をクリックします。 [Enterprise アカウント] サイドバーの [ポリシー] タブ

  4. [ ポリシー] で、 [アクション] をクリックします。

  5. [Runners](ランナー) タブをクリックします。

  6. [新しいランナー] をクリックしてから、 [新しいGitHub-ホステッド ランナー] をクリックします。

  7. 必要な詳細を入力して、新しいランナーを構成します。

    • 名前: 新しいランナーの名前を入力します。 識別しやすくするには、ハードウェアとオペレーティング システム (ubuntu-20.04-16core など) を示しておくのがよいでしょう。
    • ランナー イメージ: 使用可能なオプションからオペレーティング システムを選びます。 オペレーティング システムを選ぶと、特定のバージョンを選ぶことができるようになります。
    • ランナーのサイズ: 使用可能なオプションのドロップダウン リストからハードウェア構成を選びます。
    • 自動スケーリング: いつでもアクティブにすることができるランナーの最大数を選びます。
    • ランナー グループ: ランナーがメンバーとなるグループを選びます。 需要に合わせてスケールアップまたはスケールダウンしながら、このグループによって、ランナーのインスタンスが複数ホストされます。
    • ネットワーク: GitHub Enterprise Cloud の場合のみ、静的 IP アドレス範囲を より大きなランナー のインスタンスに割り当てるかどうかを選びます。 合計で最大 10 個の静的 IP アドレスを使うことができます。
  8. [ランナーの作成] をクリックします。

  9. To allow organizations to access your より大きなランナーs, you specify the list of organizations that can use it. For more information, see "Managing access to your runners."

Adding a より大きなランナー to an organization

You can add a より大きなランナー to an organization, where the organization admins can control which repositories can use it.

使用可能なオプションのリストから、オペレーティング システムとハードウェア構成を選ぶことができます。 このランナーの新しいインスタンスが自動スケーリングによってデプロイされると、ここで定義したオペレーティング システムとハードウェア構成が使用されます。

また、ランナーを識別するラベルを定義することもできます。これは、処理のためにワークフローを使ってランナーにジョブを送信する方法です (runs-on を使います)。 新しいランナーが既定のグループに自動的に割り当てられるか、ランナー作成プロセス中にランナーを結合する必要があるグループを選ぶことができます。 また、ランナーを登録した後で、ランナーのグループ メンバーシップを変更できます。 詳しくは、「より大きなランナーへのアクセスの制御」を参照してください。

  1. On GitHub.com, navigate to the main page of the organization.

  2. Organization 名の下で、 [設定] をクリックします。 Organization の設定ボタン

  3. In the left sidebar, click Actions, then click Runners.

  4. [新しいランナー] をクリックしてから、 [新しいGitHub-ホステッド ランナー] をクリックします。

  5. 必要な詳細を入力して、新しいランナーを構成します。

    • 名前: 新しいランナーの名前を入力します。 識別しやすくするには、ハードウェアとオペレーティング システム (ubuntu-20.04-16core など) を示しておくのがよいでしょう。
    • ランナー イメージ: 使用可能なオプションからオペレーティング システムを選びます。 オペレーティング システムを選ぶと、特定のバージョンを選ぶことができるようになります。
    • ランナーのサイズ: 使用可能なオプションのドロップダウン リストからハードウェア構成を選びます。
    • 自動スケーリング: いつでもアクティブにすることができるランナーの最大数を選びます。
    • ランナー グループ: ランナーがメンバーとなるグループを選びます。 需要に合わせてスケールアップまたはスケールダウンしながら、このグループによって、ランナーのインスタンスが複数ホストされます。
    • ネットワーク: GitHub Enterprise Cloud の場合のみ、静的 IP アドレス範囲を より大きなランナー のインスタンスに割り当てるかどうかを選びます。 合計で最大 10 個の静的 IP アドレスを使うことができます。
  6. [ランナーの作成] をクリックします。

  7. To allow repositories to access your より大きなランナーs, add them to the list of repositories that can use it. For more information, see "Managing access to your runners."

Running jobs on your runner

Once your runner type has been defined, you can update your workflow YAML files to send jobs to your newly created runner instances for processing. You can use runner groups or labels to define where your jobs run.

Only owner or administrator accounts can see the runner settings. Non-administrative users can contact the organization administrator to find out which runners are enabled. Your organization administrator can create new runners and runner groups, as well as configure permissions to specify which repositories can access a runner group.

Using groups to control where jobs are run

この例では、Ubuntu 16 コア ランナーが ubuntu-runners というグループに追加されています。 runs-on キーは、ubuntu-runners グループ内の使用可能なランナーにジョブを送信します。

name: learn-github-actions
on: [push]
jobs:
  check-bats-version:
    runs-on: 
      group: ubuntu-runners
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
        with:
          node-version: '14'
      - run: npm install -g bats
      - run: bats -v

Using labels to control where jobs are run

In this example, a runner group is populated with Ubuntu 16-core runners, which have also been assigned the label ubuntu-20.04-16core. The runs-on key sends the job to any available runner with a matching label:

name: learn-github-actions
on: [push]
jobs:
  check-bats-version:
    runs-on:
      labels: ubuntu-20.04-16core
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
        with:
          node-version: '14'
      - run: npm install -g bats
      - run: bats -v

Using labels and groups to control where jobs are run

グループとラベルを組み合わせる場合、ランナーはジョブを実行する資格を得るために両方の要件を満たす必要があります。

この例では、ubuntu-runners というランナー グループに、ラベル ubuntu-20.04-16core も割り当てられている Ubuntu 16 コア ランナーが設定されています。 runs-on キーは grouplabels を組み合わせて、ラベルが一致するグループ内の使用可能な任意のランナーにジョブがルーティングされるようにします。

name: learn-github-actions
on: [push]
jobs:
  check-bats-version:
    runs-on:
      group: ubuntu-runners
      labels: ubuntu-20.04-16core
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
        with:
          node-version: '14'
      - run: npm install -g bats
      - run: bats -v

Using multiple labels

You can specify multiple labels that need to be matched for a job to run on a runner. A runner will need to match all labels to be eligible to run the job.

In this example, a runner will need to match all three of the labels to run the job:

name: learn-github-actions
on: [push]
jobs:
  check-bats-version:
    runs-on:
      labels: [ ubuntu-20.04-16core, gpu, qa ]
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
        with:
          node-version: '14'
      - run: npm install -g bats
      - run: bats -v

ランナー グループに一意の名前を使用する

GitHub Actions では、ランナー グループ名が Organization レベルで一意である必要があります。 つまり、Organization は、Enterprise 内のランナー グループと同じ名前を持つものを作成できなくなります。 さらに、ユーザーには、Enterprise 内のグループと同じ名前を共有するすべてのランナー グループに、Organization グループの名前を変更することを提案する警告バナーが表示されます。

あいまいさを回避するために、Organization と Enterprise に重複するランナー グループがある場合、ワークフローは失敗します。 これに対処するには、Organization 内または Enterprise のいずれかのランナー グループの名前を変更するか、ワークフロー ファイルを更新してランナー グループ名にプレフィックスを追加します。

  • org/ または organization/
  • ent/ または enterprise/

例: プレフィックスを使用してランナー グループを区別する

たとえば、Organization 内に my-group という名前のランナー グループがあり、Enterprise 内に my-group という名前のランナー グループがある場合は、ワークフロー ファイルを更新して、org/my-group または ent/my-group を使用して 2 つを区別できます。

org/の使用

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

ent/の使用

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

Managing access to your runners

Note: Before your workflows can send jobs to より大きなランナーs, you must first configure permissions for the runner group. See the following sections for more information.

Runner groups are used to control which repositories can run jobs on your より大きなランナーs. You must grant access to the group from each level of the management hierarchy, depending on where you've defined the より大きなランナー:

  • Runners at the enterprise level: Configure the runner group to grant access to all the required organizations. In addition, for each organization, you must configure the group to specify which repositories are allowed access.
  • Runners at the organization level: Configure the runner group by specifying which repositories are allowed access.

For example, the following diagram has a runner group named grp-ubuntu-20.04-16core at the enterprise level. Before the repository named octo-repo can use the runners in the group, you must first configure the group at the enterprise level to allow access from the octo-org organization; you must then configure the group at the organization level to allow access from octo-repo:

Diagram explaining より大きなランナー groups

Allowing repositories to access a runner group

This procedure demonstrates how to configure group permissions at the enterprise and organization levels:

  1. ランナー グループが配置されている場所に移動します。

    • Organization 内: メイン ページに移動して、 [設定] をクリックします。

    • Enterprise レベルのグループを使用している場合:

      1. GitHub.com の右上の自分のプロファイル写真をクリックし、 [自分の Enterprise] をクリックします。 GitHub Enterprise Cloud のプロファイル写真のドロップダウン メニューの [自分の Enterprise]

      2. Enterpriseのリストで、表示したいEnterpriseをクリックしてください。 自分の Enterprise のリストの Enterprise の名前

  2. [ランナー グループ] 設定に移動します:

    • Organization 内:

      1. In the left sidebar, click Actions, then click Runner groups.
    • Enterprise レベルのグループを使用している場合:

      1. Enterprise サイドバーで、 [ポリシー] をクリックします。 [Enterprise アカウント] サイドバーの [ポリシー] タブ 1. [ ポリシー] で、 [アクション] をクリックします。 1. [ランナー グループ] タブをクリックします。
  3. グループのリストで、構成するランナー グループをクリックします。

  • For runner groups in an enterprise: under Organization access, modify which organizations can access the runner group.
  • For runner groups in an organization: under Repository access, modify which repositories can access the runner group.

Warning:

If you are using a Fixed IP range, we recommend that you only use より大きなランナーs with private repositories. Forks of your repository can potentially run dangerous code on your より大きなランナー by creating a pull request that executes the code in a workflow.

For more information, see "Controlling access to より大きなランナーs."