État de la configuration release/pilote au 2026-06-14, en complément du workflow §9 et de
docs/P0-checklist.md.
app.config.jsinjecteSENTRY_DSNdepuis l'environnement (litprocess.env.SENTRY_DSN, à défaut le placeholder d'app.json). En dev local, Expo charge automatiquement.env.localau démarrage Metro ; en build EAS, lit les secrets du projet.metro.config.jscâblé par le wizard Sentry — wrapgetSentryExpoConfigpour injecter les Debug IDs + uploader les sourcemaps avecSENTRY_AUTH_TOKEN.app/_layout.tsx:export default Sentry.wrap(RootLayout)(wizard) en complément de l'initSentry()au boot — compatible, idempotent.app.jsonplugin@sentry/react-native/expo(path moderne SDK 50+), orgosfarm, projectzero-mobile.eas.jsonprofilpilot:distribution: store,channel: pilot,autoIncrement: true(gère versionCode Android + buildNumber iOS).app.json:runtimeVersion.policy = "appVersion"→ l'OTA pilote ne s'applique qu'aux builds de mêmeversion(cf. workflow §9, OTA polish).- Métriques Sentry câblées (P8.1) : volumétrie sync initiale, durée + erreurs par cycle.
| Fichier | Clé | Valeur attendue |
|---|---|---|
eas.json |
submit.pilot.ios.appleTeamId |
Apple Team ID de l'org Ekylibre |
eas.json |
submit.pilot.ios.ascAppId |
App Store Connect App ID (créé lors du 1er submit) |
eas.json |
submit.pilot.android.serviceAccountKeyPath |
Chemin vers la clé Service Account Google Play |
| EAS env var | SENTRY_DSN |
DSN public du projet Sentry zero-mobile |
| EAS env var | SENTRY_AUTH_TOKEN |
Token Sentry pour upload des sourcemaps (build) |
| FS local | google-play-key.json |
Clé Service Account (déjà dans .gitignore) |
Le wizard Sentry a déjà créé .env.local avec les deux valeurs. Le plus
simple est de pousser ce fichier vers EAS plutôt que de re-saisir les
valeurs à la main :
# Pousse SENTRY_DSN + SENTRY_AUTH_TOKEN depuis .env.local vers EAS,
# environnement "production" (le profil pilot lit cet environnement).
# Répéter pour 'development' et 'preview' si on veut les avoir aussi
# disponibles en dev build / preview build EAS.
eas env:push production --path .env.local
eas env:push preview --path .env.local
eas env:push development --path .env.local
⚠️ EAS CLI ≥ v14 utilise le nouveau systèmeeas env:*(par environnement). L'ancieneas secret:createfonctionne encore mais ne permet pas de scoper par environnement (development/preview/production).Mode interactif si tu préfères saisir à la main : lancer
eas env:createsans flags, le CLI prompte chaque champ (valeur en mode caché).
Auto-créé par le wizard Sentry, contient :
SENTRY_DSN=https://<key>@<org>.ingest.sentry.io/<id>
SENTRY_AUTH_TOKEN=sntrys_...
Gitignored — chaque dev doit relancer npx @sentry/wizard@latest -i reactNative
sur sa machine, OU récupérer les valeurs depuis le password manager partagé.
# 1. Bumper la version dans app.json (ex. 0.1.0 → 0.2.0-pilot.1)
# → policy "appVersion" : un nouveau bundle natif si version change
# 2. Build pilot iOS + Android (cf. package.json)
pnpm build:pilot # eas build --profile pilot --platform all
# 3. Soumission stores (TestFlight + Internal Testing)
pnpm submit:pilot # eas submit --profile pilot --platform all
# 4. OTA — mise à jour pilote sans rebuild natif (mêmes version + runtime)
eas update --branch pilot --message "Hotfix X"- Apple Team ID + ASC App ID renseignés dans
eas.json -
google-play-key.jsonprésent à la racine du projet (pas commit) — SAplay-publisher-zero-mobile@ekylibre-play-publishing.iam.gserviceaccount.com(org GCPosfarm.org, projetekylibre-play-publishing), clé déposée le 2026-06-18. - App
com.ekylibre.zeromobilecréée dans Google Play Console (2026-06-18). - Service Account invité dans Play Console — Users & permissions → Release to testing tracks sur l'app Zero Mobile (2026-06-18).
- 1er AAB uploadé manuellement sur Internal Testing (2026-06-21) —
release v0.1.0 (versionCode 4) publiée pour test interne. À partir
du 2e build,
pnpm submit:pilotautomatise. - EAS env vars
SENTRY_DSNetSENTRY_AUTH_TOKENpoussés sur l'environnementproduction— Organization Auth Token régénéré et mis à jour le 2026-06-21 (le précédent token du wizard était un User Auth Token, refusé en401 Invalid org tokenau build du 2026-06-18). Cf. mémoire sentry-eas-token-gotcha. - Build pilot Android (
eas build --profile pilot --platform android) passe sans erreur Sentry — buildd144f4a7-3539-4bdb-a703-1e86b3853f39terminé le 2026-06-21 (version 0.1.0, versionCode 4, durée 26 min). AAB dispo : https://expo.dev/artifacts/eas/DDdc_Ysy-ej1BqzBFaz0snKDxzy-X6jGqld0IXETla8.aab -
pnpm doctorvert (18/18) - Suite Jest verte + lint + typecheck (
pnpm test && pnpm lint && pnpm typecheck) - Smoke device : login → sync initiale → saisie spraying offline → sync
- Validation Sentry : un crash volontaire en dev remonte bien dans le projet
- A11y : passe profonde avec TalkBack/VoiceOver sur device (pour l'instant
seuls les Pressable custom de P8.5 ont
accessibilityRole). - i18n : revue humaine FR par un agriculteur du panel pilote.
- E2E Maestro/Detox : 1 scénario complet (login → save → sync → vérif).
- Tableau de bord Sentry réservé au pilote (alertes sur taux de crash).