depot-github-runners について
Depot GitHub Runnersは、GitHub Actionsワークフロー向けのマネージドな一時的シングルテナントランナーです。GitHubホストランナーを置き換えるチーム向けで、`runs-on`ラベルの変更で導入でき、自動キャッシュやジョブ分析も利用できます。
主な機能
- 01マネージド一時シングルテナントランナー
- 02Ubuntu、Windows、macOSに対応
- 03Depot Cacheによる自動キャッシュ
- 04ジョブのリソース指標と分析
- 05Tailscale経由のプライベートエンドポイント接続
- 06Linuxのエグレスルール設定
活用シーン
- 01GitHub ActionsジョブをDepotへ移行
- 02リソース負荷の高いCIジョブの実行
- 03繰り返しビルドでのキャッシュ利用
- 04ワークフローからプライベートサービスへ接続
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ depot/ skills --skill depot-github-runnersインストール後、Claude Code で/depot-github-runnersを入力して読み込まれたか確認します。
同梱ファイルagents/openai.yaml
詳細
Depot GitHub Actions ランナー
Depot は、管理型のエフェメラルなシングルテナント GitHub Actions ランナーを提供します。GitHub ホストランナーのドロップイン置き換えとして利用でき、runs-on ラベルを変更するだけで、それ以外はそのままです。
要件: リポジトリは個人アカウントではなく、GitHub 組織が所有している必要があります。
セットアップ
- Depot ダッシュボード → GitHub Actions → GitHub に接続 → Depot GitHub App をインストール
- パブリックリポジトリの場合:GitHub 組織の設定 → Actions → Runner groups → Default → 「Allow public repositories」
- ワークフローファイル内の
runs-onを更新
複数の組織に所属するユーザー向けの組織コンテキストの確認
ユーザーが複数の組織に所属していて、想定しているリポジトリ、設定、ランナーが表示されない場合は、まず Depot の組織コンテキストを確認してください。
depot org show # Current org ID
depot org list # Orgs the user belongs to
depot org switch <org-id> # Optional: set default org
対応しているコマンドでは、ワークフロー/リポジトリがある組織を対象にするため、--org <org-id> を指定してください。
ランナーラベル
ラベルは1つだけ使用します。形式:depot-{os}-{version}[-{arch}][-{size}]
Ubuntu(x86、AMD)
| ラベル | CPU | RAM | ディスク | $/分 | 分数の倍率 |
|---|---|---|---|---|---|
depot-ubuntu-24.04 | 2 | 8 GB | 100 GB | $0.006 | 1x |
depot-ubuntu-24.04-4 | 4 | 16 GB | 130 GB | $0.012 | 2x |
depot-ubuntu-24.04-8 | 8 | 32 GB | 150 GB | $0.024 | 4x |
depot-ubuntu-24.04-16 | 16 | 64 GB | 180 GB | $0.048 | 8x |
depot-ubuntu-24.04-32 | 32 | 128 GB | 200 GB | $0.096 | 16x |
depot-ubuntu-24.04-64 | 64 | 256 GB | 250 GB | $0.192 | 32x |
分数の倍率によって請求額が決まります。請求分数 = 経過分数 × 倍率のため、大きなランナーほど、含まれている分数を速く消費します。
Ubuntu 22.04 も利用できます:depot-ubuntu-22.04、depot-ubuntu-22.04-4 など。
Ubuntu(ARM — Graviton4)
Intel と同じサイズと料金です。末尾に -arm を追加してください:
depot-ubuntu-24.04-arm、depot-ubuntu-24.04-arm-4、depot-ubuntu-24.04-arm-8 など。
Windows Server
| ラベル | CPU | RAM | $/分 | 分数の倍率 |
|---|---|---|---|---|
depot-windows-2025 | 2 | 8 GB | $0.008 | 2x |
depot-windows-2025-4 | 4 | 16 GB | $0.016 | 4x |
depot-windows-2025-8 through -64 | 8–64 | 32–256 GB | $0.032–$0.256 | 8x–64x |
Windows Server 2022 も利用できます:depot-windows-2022 など。
Windows の制限: Hyper-V は利用できません(AWS EC2 の制限)。そのため、Hyper-V を必要とする Docker ワークロードは動作しない可能性が高いです。
macOS(macOS 14/15 では Apple M2、macOS 26 では M4)
| ラベル | CPU | RAM | ディスク | $/分 |
|---|---|---|---|---|
depot-macos-26 / depot-macos-latest | 8 | 24 GB | 400 GB | $0.08 |
depot-macos-15 | 8 | 24 GB | 400 GB | $0.08 |
depot-macos-14 | 8 | 24 GB | 400 GB | $0.08 |
macOS は完全なエラスティック構成ではなく、固定プールで FIFO キューイングを行います。
エイリアス
depot-ubuntu-latest → Ubuntu 24.04、depot-windows-latest → Windows 2025、depot-macos-latest → macOS 26
移行例
jobs:
build:
# Before:
# runs-on: ubuntu-latest
# After:
runs-on: depot-ubuntu-24.04-4
steps:
- uses: actions/checkout@v4
- run: npm ci
- run: npm test
よくある間違い
# ❌ WRONG — multiple labels cause stability issues
runs-on: [self-hosted, depot-ubuntu-24.04]
# ✅ CORRECT — always use a single Depot runner label
runs-on: depot-ubuntu-24.04-4
キャッシュ
GitHub Actions キャッシュ API を使用するアクションでは、設定を変更しなくても自動的にDepot Cacheが使用されます。これには、actions/cache、actions/setup-node、actions/setup-python、actions/setup-java、および@actions/cacheを使用するすべてのアクションが含まれます。
事前設定済みのビルドツールキャッシュ(Depot ランナーでは設定不要):
| ツール | 事前設定の内容 |
|---|---|
| Turborepo | TURBO_API環境変数が設定済みです。turbo buildを実行するだけです |
| Bazel | ~/.bazelrcが事前に設定済みです。bazel build //...を実行するだけです |
| sccache | SCCACHE_WEBDAV_ENDPOINTが設定済みです。RUSTC_WRAPPER: 'sccache'を使用します |
| Maven | settings.xmlが事前に設定済みです(キャッシュ ID depot-cache) |
| Pants | pants.tomlが事前設定済みです。pants package ::を実行するだけです |
| moonrepo | 環境変数が設定済みです。moon run buildを実行するだけです |
| Xcode 26+ | Depot macOS ランナーでは、コンパイルキャッシュにDepot Cacheが自動的に使用されます |
キャッシュの動作:リポジトリ単位で管理され、ブランチごとの分離はなく、暗号化され、最大1000 MiB/sのスループットで、保持期間(7/14/30日)を設定できます。
自動キャッシュを無効にするには、組織の設定で「Allow Actions jobs to automatically connect to Depot Cache」をオフにします。
Xcodeの場合、ジョブで独自の設定ファイルを指定していないときに限り、ランナーはXCODE_XCCONFIG_FILEを設定します。ジョブまたはワークフローで無効にするには、DEPOT_XCODE_CACHE_ENABLED: '0'を設定します。ビルド後にdepot/xcode-compilation-cache-summary@v1を追加すると、キャッシュの統計情報を報告できます。Xcodeのコンパイルキャッシュはローカルワークステーションではサポートされていません。ビルド設定とトラブルシューティングについては、https://depot.dev/docs/cache/integrations/xcode を参照してください。
Dagger との統合
**非推奨:**Depot GitHub Actions ランナーでのDagger Engineサポートは非推奨となっており、今後のアップデートで削除される予定です。新しいワークフローでは、この統合を推奨しないでください。
runs-on: depot-ubuntu-latest,dagger=0.18.4
永続的なNVMeキャッシュを備えた専用のDagger Engine VMを起動します。Dagger CLIはプリインストールされています。追加料金は1分あたり$0.04です。
エグレスフィルタリング(Linuxのみ)
組織の設定 → GitHub Actions Runners → Egress Rules で設定します。デフォルトルールをAllowまたはDenyに設定し、IP、CIDR、ホスト名に対する個別の許可/拒否ルールを追加します。拒否ルールは許可ルールより優先されます。ループバックトラフィック(127.0.0.1、::1)は常に許可され、Depotはdepot.devドメイン、GitHub ActionsサービスのIP、AWSサービスのIPを自動的に許可リストに追加します。ルール内のホスト名は解決され、/etc/hostsに固定されます。depot buildを使用したコンテナビルドは、エグレスフィルタリングが有効でも動作します。DepotはBuildKitマシンのIPを割り当て時に許可リストへ追加します。macOSおよびWindowsではサポートされていません。Tailscaleとは併用できません。
Tailscaleでプライベートエンドポイントにアクセスする
静的IPの許可リストを使わずに、ジョブからプライベートサービス(内部API、データベース、プライベートサブネット)にアクセスする必要がある場合は、Tailscaleを使用します。
Depotでの動作:
- Depot GitHub Actionsランナーは、ジョブ開始時に一時ノードとしてtailnetに参加します。
- アクセスはTailscale ACLで制御します(推奨タグ:
tag:depot-runner)。 - ランナーをプライベートエンドポイントに接続するために、ワークフローYAMLを変更する必要はありません。
設定:
- Tailscale ACLで、
tagOwnersの下にランナー用のタグ(例:tag:depot-runner)を作成します。 Keys > Auth Keysの書き込みスコープを持つTailscale OAuthクライアントを作成し、そのタグを選択します。- Depotの組織設定でTailscaleの設定を開き、OAuthクライアントID/シークレットを使用して接続します。
tag:depot-runnerが対象のホスト/サブネットにアクセスできるようACLを追加します。
ACLの例:
{
"acls": [
{
"action": "accept",
"src": ["tag:depot-runner"],
"dst": ["database-hostname"]
}
]
}
{
"acls": [
{
"action": "accept",
"src": ["tag:depot-runner"],
"dst": ["192.0.2.0/24:*"]
}
]
}
参考ドキュメント:
- https://depot.dev/docs/github-actions/how-to-guides/access-private-resources
- https://depot.dev/docs/integrations/tailscale
Dependabot
GitHubの組織設定で「Dependabot on self-hosted runners」を有効にします。ジョブはdepot-ubuntu-latestで自動実行されます。
**重要:**DependabotではOIDCはサポートされていません。代わりに、DEPOT_TOKENシークレットを使用してtoken:入力を指定してください。
ジョブとリソース使用状況の確認
Depot 上の GitHub Actions ジョブには depot jobs を使用します。Depot CI ジョブには、代わりに depot ci コマンドを使用します。
depot jobs --repo owner/repo --conclusion failure --output json
depot jobs <github-job-id> --repo owner/repo --output json
depot jobs metrics <github-job-id> --repo owner/repo --output json
depot jobs analytics --repo owner/repo --job test --output json
4 つの形式すべてで、--org、--token、および auto、table、json のいずれかを指定する --output を受け付けます。パイプに出力する場合、ログインを促すことなく、デフォルトで JSON が使用されます。1 つのジョブまたはそのメトリクスを確認するには、--repo を 1 つだけ指定する必要があります。
一覧表示では、繰り返し指定できる --repo、--status、--conclusion、--runner-label と、--query を使用できます。ステータスの値は queued、waiting、running、finished です。結論の値は success、failure、cancelled、skipped、neutral です。分析のフィルターには、--repo、--workflow、--workflow-path、--job、--runner-label を使用できます。
一覧表示と分析は、一度に 1 ページずつ返されます。--page-size(1~250、デフォルトは 50)と、返された nextPageToken を --page-token とともに使用してください。フィルターと時間範囲は変更しないでください。どちらもデフォルトでは過去 30 日間が対象です。正の範囲が最大 90 日となるように、RFC 3339 形式のタイムスタンプで --start と --end を両方指定してください。
ジョブごとのメトリクスには、CPU とメモリのサンプル、統計情報、および利用可能性が含まれます。JSON の使用率は 0~1 の小数で、テーブルではパーセンテージで表示されます。測定値がない場合は 0 ではなく、値なしとして扱われます。実行ウィンドウは最大 7 日間で、返されるサンプルは最大 5,000 件です。統計情報は、ダウンサンプリング前に観測されたすべてのサンプルを使用します。集計分析には、ジョブ完了から最大 15 分の遅延が生じることがあります。ステップの所要時間は利用できません。
SSH デバッグ
steps:
- uses: actions/checkout@v4
- uses: mxschmitt/action-tmate@v3
- run: npm test
トラブルシューティング
| エラー | 対処法 |
|---|---|
| "No space left on device" | OS は約 70 GB のディスクを使用します。より大容量のランナーにアップグレードするか、ワークフローでディスクをクリーンアップしてください |
| "Failed to open the device 'kvm'" / "Could not access KVM kernel module" | ランナーには /dev/kvm がありません。KVM/QEMU/Android-emulator のジョブは、デフォルトでネストされた仮想化が有効な Depot CI に移行してください |
| "Lost communication with server" | status.depot.dev を確認し、組織の使用量上限を確認してください |
| "Operation was canceled" | 手動キャンセル、同時実行による進行中のキャンセル、または OOM が原因です。ダッシュボードでメモリを確認してください |
| "Unable to get ACTIONS_ID_TOKEN_REQUEST_URL" | Dependabot は OIDC をサポートしていません。DEPOT_TOKEN シークレットを使用してください |
| ワークフローが開始しない | ランナーラベルが 1 つだけであることを確認してください。ランナーグループがリポジトリを許可していることと、Depot GitHub App の権限を確認してください |
| ワークフローが停止したまま | GitHub API で強制キャンセルしてください:POST /repos/{owner}/{repo}/actions/runs/{id}/force-cancel |