Skip to main content

ワークフローでのセルフホストランナーの利用

ワークフローでセルフホステッド ランナーを使うには、ラベルまたはグループを使ってジョブのランナーを指定します。

デフォルトラベルを使ったジョブの転送

セルフホストランナーは、GitHub Actionsに追加されたときに特定のラベルを自動的に受信します。 それらは、ランナーのオペレーティングシステムとハードウェアプラットフォームを示すために使われます。

  • self-hosted: セルフホステッド ランナーに適用される既定のラベル。
  • linuxwindows、または macOS: オペレーティング システムに応じて適用されます。
  • x64ARM、または ARM64: ハードウェア アーキテクチャに応じて適用されます。

ワークフローのYAMLを使って、これらのラベルの組み合わせに対してジョブを送信できます。 この例では、3つのラベルすべてにマッチするセルフホストランナーが、ジョブを実行する資格を持つことになります。

runs-on: [self-hosted, linux, ARM64]
  • self-hosted - セルフホステッド ランナー上でこのジョブを実行します。
  • linux - Linux ベースのランナーのみを使います。
  • ARM64 - ARM64 ハードウェア ベースのランナーのみを使います。

既定のラベルを付けずにそれぞれのセルフホステッド ランナーを作成するには、ランナーを作成するときに --no-default-labels フラグを渡します。 アクション ランナー コントローラーは、複数のラベルをサポートしていません。

カスタムラベルを使ったジョブの転送

カスタムラベルを作成し、セルフホストランナーに割り当てることがいつでもできます。 カスタムラベルを使えば、付けられたラベルに基づいて特定の種類のセルフホストランナーにジョブを送信できるようになります。

たとえば、特定の種類のグラフィック ハードウェアを必要とするジョブがある場合、gpu というカスタム ラベルを作成し、そのハードウェアが組み込まれているランナーに割り当てることができます。 割り当てられたすべてのラベルにマッチするセルフホストランナーが、そのジョブを実行できるようになります。

以下の例は、デフォルトとカスタムのラベルを組み合わせたジョブです。

runs-on: [self-hosted, linux, x64, gpu]
  • self-hosted - セルフホステッド ランナー上でこのジョブを実行します。
  • linux - Linux ベースのランナーのみを使います。
  • x64 - x64 ハードウェア ベースのランナーのみを使います。
  • gpu- このカスタム ラベルは、GPU ハードウェアが組み込まれたセルフホステッド ランナーに手動で割り当てられました。

これらのラベルは累積的に働くので、このジョブを処理できるセルフホスト ランナーには、4 つすべてのラベルがなくてはなりません。

グループを使用したジョブのルーティング

この例では、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

ラベルとグループを使用したジョブのルーティング

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

この例では、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