Scanveil
Scanveil は GitHub App としてリポジトリにインストールされ、PR ごとに LLM と Google OSV Scanner で検査します。Management Console から repository-wide Scan も起動できます。結果は GitHub Checks に表示されます。
検査の対象
- LLM 検査: PR scan では PR diff、repository-wide Scan では既定ブランチの source snapshot
- OSV Scanner: PR scan では変更された lockfile、repository-wide Scan では既定ブランチの lockfile
- 重複抑制: 同じ箇所への LLM 表現違いを embedding 類似度で抑制
インストール先による違い
| 項目 | Repository / User にインストール | Organization にインストール |
|---|---|---|
| 対象範囲 | GitHub App に許可した個人アカウント配下の selected repositories。 | Organization 配下で GitHub App に許可した all / selected repositories。 |
| PR scan | 許可した repository の PR で実行できます。 | 許可した org repository の PR で実行できます。 |
| Repository-wide Scan | 許可した repository ごとに Management Console から起動できます。 | 許可した org repositories を横断して Management Console から起動できます。 |
| 一括適用 | 個人アカウントの許可済み repository に限定されます。 | org の all repositories を選ぶと、新規 repository も対象にできます。 |
| できないこと | Organization 全体の repository 管理や org メンバー管理には使えません。 | GitHub App に許可していない private repository は scan できません。 |
| Scanveil 側の有効化 | installation ごとに invite code を紐づけて enabled にする必要があります。 | installation ごとに invite code を紐づけて enabled にする必要があります。 |
実行基盤
GitHub webhook は Cloud Functions の webhook handler が受け、Cloud Run job が scan worker として実行されます。状態と finding は Firestore に保存されます。