Skip to main content

より大きなランナーでジョブを実行する

ワークフローをより大きなランナーで実行するように構成することで、ワークフローを高速化できます。

この機能を使用できるユーザーについて

より大きなランナー は、GitHub Team または GitHub Enterprise Cloud プランを使っている組織とエンタープライズのみが使用できます。

Platform navigation

ランナーでのジョブの実行

ランナーの種類が定義されたら、ワークフローの YAML ファイルを更新し、処理のために新しく作成されたランナー インスタンスにジョブを送信できます。 ランナー グループまたはラベルを使用して、ジョブが実行される場所を定義することができます。

Note

より大きなランナー には、ランナー名に対応する既定のラベルが自動的に割り当てられます。 より大きなランナーにはカスタム ラベルは追加できませんが、既定のラベルまたはランナーのグループを使って、特定の種類のランナーにジョブを送信できます。

ランナーの設定を表示できるのは、所有者または管理者アカウントのみです。 管理者以外のユーザーは組織のオーナーに連絡すると、有効になっているランナーを確認できます。 組織のオーナーは、新しいランナーとランナー グループを作成したり、ランナー グループにアクセスできるリポジトリを指定するためのアクセス許可を構成したりできます。 詳しくは、「より大きなランナーを管理する」をご覧ください。

リポジトリで使用可能なランナーの表示

リポジトリに repo: write アクセス許可を持つ場合は、リポジトリで使用できるランナーの一覧が表示されます。

  1. GitHub で、リポジトリのメイン ページに移動します。

  2. リポジトリ名の下にある [アクション] をクリックします。

    "github/docs" リポジトリのタブのスクリーンショット。 [アクション] タブがオレンジ色の枠線で強調表示されています。

  3. 左サイドバーの [管理] セクションで、[ランナー] をクリックします。

  4. リポジトリで使用可能なランナーの一覧を確認します。

  5. 必要に応じて、ランナーのラベルをコピーしてワークフローで使用するには、ランナーの右側にある をクリックし、[ラベルのコピー] をクリックします。

Note

Enterprise と organization の所有者、および "organization ランナーとランナー グループの管理" アクセス許可を持つユーザーは、このページからランナーを作成できます。 新しいランナーを作成するには、ランナーの一覧の右上にある [新しいランナー] をクリックして、リポジトリにランナーを追加します。

詳細は、「より大きなランナーを管理する」および「自己ホストランナーの追加」を参照してください。 Organization のカスタム ロールについて詳しくは、「カスタム組織の役割の情報」をご覧ください。

グループを使用してジョブの実行場所を制御する

この例では、Ubuntu ランナーが 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@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '14'
      - run: npm install -g bats
      - run: bats -v

ラベルを使用してジョブの実行場所を制御する

構文 runs-on: LABEL を使用して、runs-on キーにラベルを暗黙的に渡すことができます。 または、次の例に示すように、labels キーを使用することもできます。

この例では、runs-on キーは、ubuntu-20.04-16core ラベルが割り当てられている使用可能なランナーにジョブを送信します。

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

アクションが有効なリポジトリへの書き込みアクセス権限を持つすべてのユーザーは、そのリポジトリで使用可能なランナーのラベルを確認できます。 「より大きなランナーでジョブを実行する」をご覧ください。

ラベルとグループを使用してジョブの実行場所を制御する

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

この例では、ubuntu-runners というランナー グループに、ラベル ubuntu-20.04-16core も割り当てられている Ubuntu ランナーが設定されています。 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@v4
      - uses: actions/setup-node@v4
        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 ]

より大きなランナーのトラブルシューティング

より大きなランナーをターゲットとするジョブが遅延している、または実行されていない場合は、いくつかの要因が考えられます。

  • コンカレンシー設定: コンカレンシーが上限に達している可能性があります。 より多くのジョブを並列で実行できるようにする場合は、自動スケーリング設定をより大きな数値に更新します。 詳しくは、「より大きなランナーを管理する」をご覧ください。
  • リポジトリ アクセス許可: より大きなランナーに対して適切なリポジトリ アクセス許可が有効になっていることを確認します。 既定で、エンタープライズ ランナーはリポジトリ レベルでは使用できないため、組織管理者が手動で有効にする必要があります。 詳しくは、「より大きなランナーを管理する」をご覧ください。
  • 課金: より大きなランナーを使うには、有効なクレジット カードを登録する必要があります。 アカウントにクレジット カードを追加してから、より大きなランナーの使用が有効になるまでに最長 10 分かかる場合があります。 詳しくは、「支払い方法を追加または編集する」をご覧ください。
  • 使用制限: GitHub Actionsの使用制限を 0 より大きい値に設定する必要があります。 詳しくは、「GitHub Actions の使用制限の管理」をご覧ください。
  • フェア ユース ポリシー: GitHubには、実行しているジョブ数やGitHub Actions全体で実行されているジョブ数など、いくつかの要因に基づいてジョブの調整を開始するフェア ユース ポリシーがあります。
  • ジョブ キューに入ってから割り当てるまでの時間: ジョブ キューに入ってから割り当てるまでの時間とは、ジョブ要求を受信してから、GitHub がそのジョブを実行する VM を割り当てるまでの時間を指します。 所定の YAML ワークフロー ラベル (ubuntu-latest など) を使用している標準の GitHub ホスト ランナーは、常に "ウォーム" 状態になります。 より大きなランナーを使用した場合、ウォーム マシンでは、(マシンのプールが小さいために) 最初の要求を受信した時にジョブを取得する準備ができていない可能性があります。 その結果、GitHub は新しい VM を作成する必要があるため、キューに入ってから割り当てるまでの時間が長くなります。 一度ランナーが使用されると、VM は後続のワークフロー実行にすぐに対応し、その後 24 時間のワークフロー実行において、キューに入ってから割り当てるまでの時間が短縮されます。