Testare e distribuire da CI
Un ciclo realizzabile dalla prima modifica alla distribuzione automatica, con i limiti dell'emulazione locale dichiarati in anticipo.
1. Eseguilo localmente
aura functions serve esegue il tuo file con Deno e lo riavvia quando lo salvi.
È un semplice server Deno. Rispetto alla piattaforma ha:
- Nessuna intestazione della piattaforma.
x-aura-roleex-aura-user-idsono assenti: inviateli tu stesso concurl -Hper testare i rami di autorizzazione. - Nessun segreto. Passali nella tua shell:
STRIPE_SECRET_KEY=sk_test_… aura functions serve checkout. - Nessun limite. I limiti di memoria, timeout, dimensione corporea e frequenza non vengono applicati.
- Richieste semplici. Chiami direttamente la funzione, quindi
pathemethodsono quelle del tuocurl, non le opzioniinvokedell'SDK.
L'SDK non può avere come destinazione questo server perché invoke chiama la route della piattaforma. Testa il percorso dell'SDK rispetto a un progetto reale, come di seguito.
2. Provalo sul serio
Crea un progetto per lo sviluppo (vedi la tua prima funzione), distribuisci lì la funzione ed esegui il test tramite l'SDK. Ciò copre le intestazioni di identità, i limiti e le classi di errore della piattaforma.
Suggerimenti:
- Utilizza un progetto dedicato, mai la produzione, e mantieni le sue chiavi nei tuoi segreti CI.
- Il limite della velocità di chiamata è di 15 chiamate, quindi 1 al secondo per IP. Distanzia i tuoi test o eseguili in serie.
3. Distribuire da CI
La CLI aura si installa da npm su macOS Apple Silicon e dal sorgente altrove, quindi un lavoro CI Linux è più semplice con l'API HTTP. La distribuzione prevede un POST per funzione, autenticato con una chiave service_role. Questo ciclo esatto è stato eseguito su un progetto reale e la funzione ha risposto successivamente.
Fatti che rendono sicuro l'esecuzione ad ogni spinta:
POSTsostituisce il codice di una funzione esistente e mantiene i suoi segreti, perché il corpo non haenv_vars.- Una funzione è a file singolo: le relative importazioni non vengono spedite. Raggruppa prima se usi i moduli locali.
- Non c'è cronologia delle versioni sul server. La cronologia Git è il rollback: per tornare indietro, annullare il commit e consentire nuovamente la distribuzione di CI.
Quindi esegui i test di integrazione rispetto al progetto appena distribuito, in un lavoro successivo.
4. Sviluppo, allestimento e produzione
Un progetto è un ambiente. Crea un progetto per ambiente, ciascuno con il proprio URL e chiavi, e lascia che CI scelga la destinazione:
| Ambiente | Progetto | Distribuito quando |
|---|---|---|
| Sviluppo | uno per sviluppatore o condiviso | su richiesta, presso una filiale |
| Messa in scena | my-app-staging | ogni spinta a main |
| Produzione | my-app | un tag di rilascio, una volta superati i test di stadiazione |
Archivia AURA_PROJECT_URL e AURA_SERVICE_ROLE_KEY per ambiente GitHub e imposta i segreti di ciascuna funzione separatamente in ciascun progetto. Nulla è condiviso tra i progetti.