Tester et déployer à partir de CI
Une boucle réalisable depuis la première édition jusqu'à un déploiement automatique, avec les limites de l'émulation locale énoncées d'emblée.
1. Exécutez-le localement
aura functions serve exécute votre fichier avec Deno et le redémarre lorsque vous enregistrez.
Il s'agit d'un simple serveur Deno. Par rapport à la plateforme, elle a :
- Aucun en-tête de plate-forme.
x-aura-roleetx-aura-user-idsont absents : envoyez-les vous-même aveccurl -Hpour tester les branches d'autorisation. - Aucun secret. Passez-les dans votre shell :
STRIPE_SECRET_KEY=sk_test_… aura functions serve checkout. - Aucune limite. Les limites de mémoire, de délai d'attente, de taille du corps et de débit ne sont pas appliquées.
- Demandes simples. Vous appelez la fonction directement, donc
pathetmethodsont ceux de votrecurl, pas les optionsinvokedu SDK.
Le SDK ne peut pas cibler ce serveur, car invoke appelle la route de la plateforme. Testez le chemin du SDK par rapport à un projet réel, comme ci-dessous.
2. Testez-le en vrai
Créez un projet de développement (voir votre première fonction), déployez-y la fonction et testez via le SDK. Cela couvre les en-têtes d’identité, les limites et les classes d’erreur de la plateforme.
Conseils :
- Utilisez un projet dédié, jamais de production, et conservez ses clés dans vos secrets CI.
- La limite du taux d'appel est de 15 appels puis 1 par seconde par IP. Espacez vos tests ou exécutez-les en série.
3. Déployer à partir de CI
La CLI aura s'installe à partir de npm sur macOS Apple Silicon et à partir d'une source ailleurs, donc un travail Linux CI est plus simple avec l'API HTTP. Le déploiement consiste en un POST par fonction, authentifié avec une clé service_role. Cette boucle exacte a été exécutée sur un projet réel et la fonction a répondu par la suite.
Faits qui permettent de l'exécuter en toute sécurité à chaque poussée :
- Le
POSTremplace le code d'une fonction existante et garde ses secrets, car le corps n'a pas deenv_vars. - Une fonction est mono-fichier : les importations relatives ne sont pas expédiées. Regroupez d'abord si vous utilisez des modules locaux.
- Il n'y a pas d'historique des versions sur le serveur. Votre historique Git est la restauration : pour revenir en arrière, annulez la validation et laissez CI se déployer à nouveau.
Exécutez ensuite vos tests d'intégration sur le projet que vous venez de déployer, dans une tâche suivante.
4. Développement, mise en scène et production
Un projet est un environnement. Créez un projet par environnement, chacun avec sa propre URL et ses propres clés, et laissez CI choisir la cible :
| Environnement | Projet | Déployé lorsque |
|---|---|---|
| Développement | un par développeur ou partagé | sur demande, en agence |
| Mise en scène | my-app-staging | chaque pression sur main |
| Fabrication | my-app | une balise de version, une fois les tests de préparation réussis |
Stockez AURA_PROJECT_URL et AURA_SERVICE_ROLE_KEY par environnement GitHub et définissez les secrets de chaque fonction séparément dans chaque projet. Rien n'est partagé entre les projets.