Fix Workflows : Correction définitive de l'erreur wrangler not found dans GitHub Actions
Correction définitive de l’erreur Workflows : Command wrangler not found dans GitHub Actions
Section titled “Correction définitive de l’erreur Workflows : Command wrangler not found dans GitHub Actions”1. Description du Problème
Section titled “1. Description du Problème”Lors de l’exécution des workflows GitHub Actions après l’ajout de Better Auth, tous les jobs de déploiement échouaient avec l’erreur suivante :
Error: ERR_PNPM_RECURSIVE_EXEC_FIRST_FAIL
× Command "wrangler" not found
Error: Process completed with exit code 1.Ce problème affectait les 3 workflows :
.github/workflows/deploy-dev.yml.github/workflows/deploy-prod.yml.github/workflows/redeploy-secrets.yml
2. Historique des Tentatives de Résolution
Section titled “2. Historique des Tentatives de Résolution”Première tentative (commit a2345c5) :
Section titled “Première tentative (commit a2345c5) :”- Solution : Changer de
npx wrangleràpnpm exec wrangler - Raison : Utiliser la version locale de wrangler installée dans le monorepo
- Résultat : Échec -
pnpm exec wranglerne fonctionne pas dans GitHub Actions
Deuxième tentative (commit ce470c5) :
Section titled “Deuxième tentative (commit ce470c5) :”- Solution : Ajouter
wranglerdanspackage.jsonracine - Raison : S’assurer que wrangler est disponible localement
- Résultat : Échec -
pnpm exec wranglerne trouve toujours pas le binaire
Troisième tentative (commit e5446fa) :
Section titled “Troisième tentative (commit e5446fa) :”- Solution : Utiliser le flag
--cwdde wrangler - Raison : Exécuter wrangler comme s’il était dans le service
- Résultat : Échec - Le problème n’est pas le répertoire mais
pnpm execlui-même
3. Analyse de la Cause Racine
Section titled “3. Analyse de la Cause Racine”-
Comportement de
pnpm execdans CI :pnpm exec wranglerne fonctionne pas correctement dans l’environnement GitHub Actions- Même avec wrangler installé à la racine du monorepo,
pnpm execne peut pas localiser le binaire - Ce problème est spécifique aux environnements CI/CD non-interactifs
-
Pourquoi
npx wranglerfonctionnait avant :npxtélécharge et exécute wrangler directement sans dépendre denode_moduleslocauxnpxest conçu pour fonctionner de manière fiable dans les environnements CI- La documentation Cloudflare recommande explicitement
npx wranglerpour les CI/CD
-
Historique de succès :
- Avant l’ajout de Better Auth, les workflows utilisaient
npx wrangleret fonctionnaient correctement - Le changement vers
pnpm exec wranglera introduit ce problème
- Avant l’ajout de Better Auth, les workflows utilisaient
4. Solution Définitive Appliquée
Section titled “4. Solution Définitive Appliquée”Revenir à npx wrangler qui est la méthode recommandée par Cloudflare pour les environnements CI/CD.
Commandes corrigées dans tous les workflows :
Section titled “Commandes corrigées dans tous les workflows :”Pour les secrets :
# Avant :echo "${{ secrets.BETTER_AUTH_SECRET }}" | pnpm exec wrangler secret put BETTER_AUTH_SECRET --env dev --cwd apps/web
# Après :echo "${{ secrets.BETTER_AUTH_SECRET }}" | npx wrangler secret put BETTER_AUTH_SECRET --env dev --cwd apps/webPour les déploiements workers :
# Avant :pnpm exec wrangler deploy --cwd "$service_dir" --env dev
# Après :npx wrangler deploy --cwd "$service_dir" --env devPour les déploiements pages :
# Avant :pnpm exec wrangler pages deploy dist --project-name=amn-studio-dev --branch=main --cwd apps/studio
# Après :npx wrangler pages deploy dist --project-name=amn-studio-dev --branch=main --cwd apps/studioModifications effectuées :
Section titled “Modifications effectuées :”-
.github/workflows/deploy-dev.yml:- Lignes 67-69 : Secrets Better Auth
- Ligne 75 : Deploy Web App
- Lignes 128-130 : Secrets submission-processor
- Ligne 140 : Deploy workers
- Ligne 104 : Deploy Studio
-
.github/workflows/deploy-prod.yml:- Lignes 58-60 : Secrets Better Auth
- Ligne 66 : Deploy Web App
- Lignes 117-119 : Secrets submission-processor
- Ligne 129 : Deploy workers
- Ligne 94 : Deploy Studio
-
.github/workflows/redeploy-secrets.yml:- Lignes 67-69 : Secrets Better Auth
- Ligne 75 : Deploy Web App
- Ligne 133 : Deploy workers
- Ligne 109 : Deploy Studio
5. Tests de Validation
Section titled “5. Tests de Validation”Test local avec –dry-run :
Section titled “Test local avec –dry-run :”# Test sur web appnpx wrangler deploy --cwd apps/web --dry-run# ✅ Succès : Workers bindings détectés correctement
# Test sur form-handlernpx wrangler deploy --cwd services/form-handler --env dev --dry-run# ✅ Succès : Workers bindings détectés correctementRésultat attendu :
Section titled “Résultat attendu :”Les workflows GitHub Actions devraient maintenant :
- Utiliser
npx wranglerqui est fiable dans les environnements CI - Exécuter wrangler avec le flag
--cwdpour pointer vers la configuration du service - Déployer correctement tous les composants sans erreur “command not found”
6. Leçons Apprises
Section titled “6. Leçons Apprises”-
Respecter les recommandations officielles :
- La documentation Cloudflare recommande
npx wranglerpour les CI/CD - Les tentatives d’optimisation locale (
pnpm exec) ont échoué
- La documentation Cloudflare recommande
-
Comprendre l’historique :
npx wranglerfonctionnait correctement avant Better Auth- Le changement était inutile et a introduit des problèmes
-
Tester dans l’environnement cible :
- Les tests locaux ne reproduisent pas toujours les problèmes CI
- Il faut comprendre les différences entre local et CI