メインコンテンツまでスキップ

GitHub 連携

Takumi Runner は、GitHub App を介して GitHub Organization と連携します。このページでは、連携の仕組みとランナーが払い出されるまでの流れを説明します。

連携の概要

Takumi Runner は、GitHub の GitHub App として実装されています。Organization に GitHub App をインストールすると、GitHub はワークフロージョブが発生するたびに workflow_job Webhook を Takumi Runner に送信します。

Takumi Runner はこの Webhook を受信し、runs-on ラベルに takumi-runner が含まれているジョブだけを処理対象として拾い上げます。それ以外のラベル(ubuntu-latest など)を持つジョブは無視されるため、既存のワークフローに影響を与えません。

GitHub App の権限

Takumi Runner GitHub App は、ランナーの登録・解除やジョブステータスの報告に必要な最小限の権限のみを要求します。

権限スコープアクセスレベル用途
ActionsRepositoryRead & Writeワークフロージョブイベントの受信
ChecksRepositoryRead & Writeジョブステータスの報告
MetadataRepositoryReadリポジトリメタデータへのアクセス
Self-hosted runnersOrganizationRead & Writeセルフホストランナーの登録・解除

ランナーが払い出されるまでの流れ

Takumi Runner は、JIT(Just-In-Time)パターン でランナーを管理します。従来のセルフホストランナーのように常時起動しておくのではなく、ジョブが発生したタイミングでランナーを動的に生成し、完了後に自動的に破棄します。

以下の図は、ジョブが実行されるまでの流れを示しています。