Test en implementeer vanuit CI
Een werkbare lus vanaf de eerste bewerking tot een automatische implementatie, waarbij de grenzen van lokale emulatie vooraf worden vermeld.
1. Voer het lokaal uit
aura functions serve voert uw bestand uit met Deno en start het opnieuw wanneer u het opslaat.
Het is een gewone Deno-server. Vergeleken met het platform heeft het:
- Geen platformheaders.
x-aura-roleenx-aura-user-idontbreken: stuur ze zelf metcurl -Hom autorisatievertakkingen te testen. - Geen geheimen. Geef ze door in je shell:
STRIPE_SECRET_KEY=sk_test_… aura functions serve checkout. - Geen limieten. Geheugen-, time-out-, lichaamsgrootte- en snelheidslimieten worden niet toegepast.
- Duidelijke verzoeken. U roept de functie rechtstreeks aan, dus
pathenmethodzijn die van uwcurlen niet deinvoke-opties van de SDK.
De SDK kan deze server niet targeten, omdat invoke de platformroute aanroept. Test het SDK-pad met een echt project, zoals hieronder.
2. Test het in het echt
Maak een project voor ontwikkeling (zie uw eerste functie), implementeer de functie daar en test via de SDK. Dit omvat de identiteitsheaders, limieten en foutklassen van het platform.
Tips:
- Gebruik een specifiek project, nooit productie, en bewaar de sleutels ervan in uw CI-geheimen.
- De limiet voor de aanroepsnelheid is 15 oproepen en vervolgens 1 per seconde per IP. Verspreid uw tests of voer ze serieel uit.
3. Implementeren vanuit CI
De aura CLI wordt geïnstalleerd vanaf npm op macOS Apple Silicon en vanaf een andere bron, dus een Linux CI-taak is eenvoudiger met de HTTP API. Implementatie is één POST per functie, geverifieerd met een service_role sleutel. Deze exacte lus werd tegen een echt project uitgevoerd en de functie antwoordde daarna.
Feiten die ervoor zorgen dat dit bij elke druk veilig is:
- De
POSTvervangt de code van een bestaande functie en behoudt zijn geheimen, omdat de body geenenv_varsheeft. - Een functie bestaat uit één bestand: relatieve importen worden niet verzonden. Bundel eerst als u lokale modules gebruikt.
- Er is geen versiegeschiedenis op de server. Je Git-geschiedenis is de rollback: om terug te gaan, draai je de commit terug en laat je CI opnieuw implementeren.
Voer vervolgens uw integratietests uit op het project dat u zojuist hebt geïmplementeerd, in een volgende taak.
4. Ontwikkeling, enscenering en productie
Eén project is één omgeving. Creëer één project per omgeving, elk met een eigen URL en sleutels, en laat CI het doel kiezen:
| Milieu | Project | Ingezet wanneer |
|---|---|---|
| Ontwikkeling | één per ontwikkelaar of gedeeld | op aanvraag, vanuit een filiaal |
| Staging | my-app-staging | elke druk op main |
| Productie | my-app | een release-tag, nadat de staging-tests zijn geslaagd |
Bewaar AURA_PROJECT_URL en AURA_SERVICE_ROLE_KEY per GitHub-omgeving en stel de geheimen van elke functie afzonderlijk in elk project in. Er wordt niets gedeeld tussen projecten.