GitHub App
A cosa serve
La GitHub App fornisce all'API una capability server-to-server limitata per
verificare main, il repository installato e il workflow Frontend approvato,
poi effettuare dispatch e riconciliazione.
sequenceDiagram
participant Admin
participant API
participant D1
participant App as GitHub App
participant Actions as GitHub Actions
Admin->>API: azione deployment proiettata
API->>D1: operation e attempt immutabili
API->>App: JWT App e token installazione
App-->>API: accesso repository-scoped
API->>App: verifica main e workflow hardcoded
API->>Actions: dispatch con input server-owned
Actions-->>API: run autorevole o evidenza ambigua
API->>D1: stato ed evidenza sanitizzata
Componenti che lo usano
Il provider GitHubAppFrontendDeploymentProvider, il servizio deployment
Frontend, il workspace Admin e la riconciliazione di operation D1.
Dati e artefatti scambiati
L'API crea un JWT App breve, ottiene un token installazione, legge repository,
ref main, workflow e run, e invia input di dispatch hardcoded. Conserva solo
commit, run e stato sanitizzati.
Autenticazione e autorizzazione
La chiave privata autentica l'App verso GitHub; il token installazione limita la capability. L'autorizzazione utente resta nell'API e l'approvazione produzione richiede un umano. Il browser non riceve credenziali GitHub.
Cosa possiede il provider
GitHub possiede App, installation, token effimero, permessi repository, ref, workflow metadata, dispatch acknowledgement e run evidence.
Cosa possiede Architecture Coffee
L'API possiede repository unico atteso, workflow per ambiente, ref main,
conferme, input, eligibility, approvazione e stato D1. Il chiamante non sceglie
repository, workflow o ref.
Operazioni automatiche, manuali e protette
Capability e riconciliazione sono letture server-owned. Il dispatch avviene solo dopo richiesta autorizzata; in produzione segue l'approvazione umana separata. Creazione, rotazione e revoca chiavi sono operazioni security separate.
Fallimenti e comportamento fail-closed
Import chiave, firma JWT, token, scope installation, main, workflow o rete
non autorevoli producono capability non disponibile. Dispatch ambiguo porta a
unknown; non viene inventato un secondo run.
Verifiche operative
- installation limitata al solo repository previsto;
maincon SHA valido;- workflow hardcoded attivo;
- produzione disabilitata salvo rollout esplicito;
- un solo run compatibile in riconciliazione;
- nessun token, JWT o chiave nei log.