Skip to content

Fix Workflows : Correction définitive de l'erreur wrangler not found dans GitHub Actions

Fix Workflows : Correction définitive de l'erreur wrangler not found dans GitHub Actions

Documentation de la résolution définitive de l'erreur Command wrangler not found lors du déploiement dans GitHub Actions.

Correction définitive de l’erreur Workflows : Command wrangler not found dans GitHub Actions

1. Description du Problème1/2

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 :

Terminal window
Error: ERR_PNPM_RECURSIVE_EXEC_FIRST_FAIL
× Command "wrangler" not found
Error: Process completed with exit code 1.

1. Description du Problème2/2

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

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 wrangler ne fonctionne pas dans GitHub Actions

Deuxième tentative (commit ce470c5) :

  • Solution : Ajouter wrangler dans package.json racine
  • Raison : S’assurer que wrangler est disponible localement
  • Résultat : Échec - pnpm exec wrangler ne trouve toujours pas le binaire

Troisième tentative (commit e5446fa) :

  • Solution : Utiliser le flag --cwd de 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 exec lui-même

3. Analyse de la Cause Racine1/3

  1. Comportement de pnpm exec dans CI :

    • pnpm exec wrangler ne fonctionne pas correctement dans l’environnement GitHub Actions
    • Même avec wrangler installé à la racine du monorepo, pnpm exec ne peut pas localiser le binaire
    • Ce problème est spécifique aux environnements CI/CD non-interactifs

3. Analyse de la Cause Racine2/3

  1. Pourquoi npx wrangler fonctionnait avant :

    • npx télécharge et exécute wrangler directement sans dépendre de node_modules locaux
    • npx est conçu pour fonctionner de manière fiable dans les environnements CI
    • La documentation Cloudflare recommande explicitement npx wrangler pour les CI/CD

3. Analyse de la Cause Racine3/3

  1. Historique de succès :

    • Avant l’ajout de Better Auth, les workflows utilisaient npx wrangler et fonctionnaient correctement
    • Le changement vers pnpm exec wrangler a introduit ce problème

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 :1/3

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/web

Commandes corrigées dans tous les workflows :2/3

Pour les déploiements workers :

# Avant :
pnpm exec wrangler deploy --cwd "$service_dir" --env dev
# Après :
npx wrangler deploy --cwd "$service_dir" --env dev

Commandes corrigées dans tous les workflows :3/3

Pour 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/studio

Modifications effectuées :1/3

  1. .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

Modifications effectuées :2/3

  1. .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

Modifications effectuées :3/3

  1. .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

Test local avec –dry-run :

Terminal window
# Test sur web app
npx wrangler deploy --cwd apps/web --dry-run
# ✅ Succès : Workers bindings détectés correctement
# Test sur form-handler
npx wrangler deploy --cwd services/form-handler --env dev --dry-run
# ✅ Succès : Workers bindings détectés correctement

Résultat attendu :

Les workflows GitHub Actions devraient maintenant :

  • Utiliser npx wrangler qui est fiable dans les environnements CI
  • Exécuter wrangler avec le flag --cwd pour pointer vers la configuration du service
  • Déployer correctement tous les composants sans erreur “command not found”

6. Leçons Apprises1/2

  1. Respecter les recommandations officielles :

    • La documentation Cloudflare recommande npx wrangler pour les CI/CD
    • Les tentatives d’optimisation locale (pnpm exec) ont échoué
  2. Comprendre l’historique :

    • npx wrangler fonctionnait correctement avant Better Auth
    • Le changement était inutile et a introduit des problèmes

6. Leçons Apprises2/2

  1. 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
Switch to normal mode

Contents