-
Notifications
You must be signed in to change notification settings - Fork 2
1 org に複数の GitHub アカウント/Organization を紐づけられるようにする #283
Copy link
Copy link
Open
Description
課題
現在、1 Upflow organization につき GitHub App installation は 1 つしか紐づけられない。
個人アカウント(例: github.com/coji)と所属する GitHub Organization(例: github.com/techtalkjp)の両方の repos を同じテナントで追跡したいケースに対応できない。
実際のコードで確認した制約
1. github_app_links スキーマ (db/shared.sql:144-160)
PRIMARY KEY (organization_id)で 1 org 1 レコード固定UNIQUE (installation_id)/UNIQUE (github_account_id)github_orgは単数カラム
2. クエリ層 (app/services/github-integration-queries.server.ts:12)
getGithubAppLink(organizationId)はexecuteTakeFirst()で単一 link を返す前提
3. Octokit 解決 (app/services/github-octokit.server.ts:90-117)
resolveOctokitFromOrg(org)が org に対して単一のgithubAppLink.installationIdから Octokit を生成- 呼び出し側は「org → 1 Octokit」を前提にしている
4. tenant DB の repositories (db/tenant.sql:23-40)
integration_idは持つが、どの installation 経由で fetch するかの情報はない- つまり repositories を installation ごとに分けて crawl する仕組みが存在しない
5. Webhook (app/services/github-webhook-installation.server.ts)
findActiveLinkByInstallationOrAccountはexecuteTakeFirst()で1件前提- installation.created ハンドラは既存 link の行を UPDATE する設計(= 1 org 1 link 前提)
設計・対応方針
設計判断・スキーマ変更・移行方針・受け入れ条件は RDD を正とする:
📄 docs/rdd/issue-283-multiple-github-accounts.md
実装は stacked PR で段階的に進める。
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels