GitHub App の作成
provider = "github" を指定した Git channel は、ユーザーではなく GitHub App として認証します。このアプリは独自のボット ID(your-app[bot])と独自の権限を持ち、インストールされたすべてのリポジトリで動作します。このページでは、一度きりのアプリ作成手順を説明し、各値を channel の設定にマッピングします。
個人アカウントと組織の両方で機能します。唯一の違いは、アプリの所有者と、誰がインストールできるかです。
公式ドキュメント: GitHub 公式の GitHub App の登録 および GitHub Apps の秘密キーの管理 は、このページのすべてについてのアップストリームリファレンスです。
1. アプリを作成する
GitHub → 設定 → 開発者設定 → GitHub Apps → 新しい GitHub App。
- 個人アプリ: 自分の 開発者設定 で作成します。
- Org アプリ: まず組織に切り替えてください(組織の Settings → Developer settings)、そうすれば組織がアプリを所有し、組織の管理者が管理できます。
記入:
- Name と Homepage URL: 任意の有効な URL。アプリは Web トラフィックを提供しません。
- Webhook → Active: チェックを外してください。チャンネルは REST API をポーリングします。Webhook を受信せず、公開 URL は不要です。
- リポジトリの権限: チャネルが使用するものだけを正確に付与し、それ以上は付与しない:
- Issues: 読み取りと書き込み
- プルリクエスト: 読み取りと書き込み
- Contents: 読み取り専用(PR のファイル一覧とリリースに必要)
- メタデータ: 読み取り専用 (必須; 自動選択)
- Actions: 読み取り専用、
workflow_run.*イベントをルーティングする場合のみ - その他のすべてのアクセス許可は アクセスなし のままにしてください。
- このアプリはどこにインストールできますか?: 「このアカウントのみ」は個人または単一組織のセットアップで問題ありません。
Create GitHub App をクリックします。
2. 2つの認証情報を収集する
作成後のアプリの設定ページで:
- App ID: 上部付近に表示されます。これは
app_idです。 - 秘密鍵 → 秘密鍵を生成する。 GitHub は単一の
.pem(RS256) をダウンロードします。これは署名鍵です。GitHub は公開鍵の半分のみを保持します。その内容をprivate_keyに貼り付けます。.pemファイル自体は実行時に参照されないため、鍵が保存されたらダウンロードを削除できます。
3. アプリをインストールする
アプリの設定 → Install App → アカウントまたは組織を選択 → All repositories または特定の選択を選びます。インストールによってアプリにリポジトリへのアクセスが許可されます。インストールがなければ、アプリは認証できても何も見えません。
アプリがちょうど1つのアカウントにインストールされている場合、installation_id を未設定のままにできます。チャネルは初回使用時にインストールを一覧表示し、唯一のものを自動選択します。ゼロまたは複数見つかった場合は即座に失敗します。installation_id は、アプリに複数のインストールがある場合にのみ明示的に設定してください(1つのチャネルエイリアスは1つのインストールに対応します)。
4. 設定にマッピングする
以下の各フィールドを、お好みのインターフェースで設定してください。秘密鍵は暗号化されたシークレットであり、専用のマスク付きウィジェットが用意されています。それ以外は通常のフィールドです。
provider: github に設定します。
ゲートウェイダッシュボード
/config/channels/git を開き、そこで channels.git.<alias>.provider フィールドを設定します。
zerocode
Config ペインで、channels.git.<alias>.provider フィールドを設定します。
zeroclaw config
zeroclaw config set channels.git.<alias>.provider <value>
app_id: ステップ2のApp ID。
ゲートウェイダッシュボード
/config/channels/git を開き、そこで channels.git.<alias>.app_id フィールドを設定します。
zerocode
Config ペインで、channels.git.<alias>.app_id フィールドを設定します。
zeroclaw config
zeroclaw config set channels.git.<alias>.app_id <value>
private_key: ステップ2のPEMです。暗号化された1つの設定ストアにインラインで存在し、保護すべきディスク上の個別のキーファイルはありません。BEGIN/END行を含む完全なPEMを貼り付けてください。ダッシュボードではマスクされた複数行フィールドとして表示されます。
channels.git.<alias>.private_keyはシークレットです。 暗号化して保存され、平文のconfig.tomlには決して保存されません。書き込み時に暗号化する次のいずれかを通じて設定します:
ゲートウェイダッシュボード
/config/channels/git を開き、そこで channels.git.<alias>.private_key フィールドを設定します。
zerocode
Config ペインで、channels.git.<alias>.private_key フィールドを設定します(入力はマスクされます)。
zeroclaw config
zeroclaw config set channels.git.<alias>.private_key # マスク入力のプロンプトを表示し、暗号化して保存
repos: 監視する owner/repo のリスト。空にすると、インストールが確認できるすべてのリポジトリをポーリングします。
ゲートウェイダッシュボード
/config/channels/git を開き、そこで channels.git.<alias>.repos フィールドを設定してください。
zerocode
Config ペインで、channels.git.<alias>.repos フィールドを設定します。
zeroclaw config
zeroclaw config set channels.git.<alias>.repos <value>
installation_id: オプション。アプリに複数のインストールがある場合のみ(ステップ 3)。インストールが1つの場合は未設定のままにし、チャンネルが自動選択されます。
ゲートウェイダッシュボード
/config/channels/git を開き、そこで channels.git.<alias>.installation_id フィールドを設定します。
zerocode
Config ペインで、channels.git.<alias>.installation_id フィールドを設定します。
zeroclaw config
zeroclaw config set channels.git.<alias>.installation_id <value>
完全なフィールドリファレンスについては、Git チャネル ページを参照してください。
5. 確認
Git チャネルは標準の配布アーティファクトに含まれますが、軽量版の Cargo デフォルトには含まれません。カスタムソースビルドでは、channel-git(デフォルト機能を無効にする場合は agent-runtime も)を含めます:
cargo build --features channel-git
channel-git は、接続済みのすべての forge プロバイダーを 1 つのビルドに取り込みます。プロバイダーごとの小さなサブセットは存在せず、channel-git なしで単体の provider-* フィーチャーをビルドしてもチャンネルは登録されません。
起動時にチャネルはアプリ JWT を発行し、インストール トークンと交換し、自身の bot ログインを解決します。pull_request.opened または issue 上でのアプリへの @メンションは、エージェントに到達するはずです。起動が missing-private-key エラーで失敗する場合、private_key が未設定または空白です。インストール エラーで失敗する場合、アプリのインストールがゼロまたは複数あるため、installation_id を設定してください。イベント ルーティング、ピア グループのバインディング、および運用上の注意については、Git チャネル ページを参照してください。