[DTP-Worker 20260804_234104] Durcissement mobile-build.yml : gating d'activation via preflight-outputs (secrets-context hors if: job → risque SKIP silencieux) → 1 édition CI in-scope
- build-ios/build-android gataient sur `if: secrets.EAS_TOKEN != '' …` au niveau JOB, où le `secrets` context n'est pas garanti (GitHub Actions ne l'expose pas dans jobs.<id>.if ; act/Gitea = ambigu) → les builds pouvaient rester SKIP en silence le jour où Michel fournit un EAS_TOKEN valide. - Correctif = pattern canonique preflight-output : secret lu dans un step de preflight (secrets y est toujours dispo) → outputs booléens has_token/has_repo → gate consommé via needs.preflight.outputs.* (dispo en if: partout · portable GitHub ET Gitea/act). - Contrat observable inchangé (preflight vert + rapporte les secrets · builds SKIP sans token) → prose ci/README.md §Second workflow toujours exacte, 0 dérive doc. - Vérif : YAML valide · 0 secrets. restant dans un if: de job · needs:preflight conservé · 4 écritures $GITHUB_OUTPUT · aucun gate ne linte le workflow (hors gate.needs) · run_ci.sh 32 PASS inchangé. - 2 canaux de log à jour (activity_log + daily_reports addendum). 0 nouveau module (#5) · 0 chiffre inventé (#6) · aucune commande VPS (#8). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -93,3 +93,34 @@ via un recompute `python3` indépendant (aucune valeur saisie à la main · #6)
|
||||
`check_artifacts` car non issu de `build`) est bien protégé par son gate dédié
|
||||
`ci/check_regression.sh` (régénère `run` frais + exige l'identité byte-for-byte) — donc
|
||||
les totaux 624 ne peuvent pas se périmer en silence. **0 édition de production · 0 dérive.**
|
||||
|
||||
---
|
||||
|
||||
## Addendum · Session 234104 · Durcissement du gating d'activation `mobile-build.yml` → 1 édition CI in-scope
|
||||
|
||||
Quatrième session du 08-04. Après 3 passes read-only CLEAN, changement de registre :
|
||||
**correctness d'un artefact CI in-scope à impact futur réel** plutôt qu'un 4e audit
|
||||
redondant. Cible = le workflow `mobile-build.yml` que ce rapport désigne comme prochaine
|
||||
tâche (s'active dès `EAS_TOKEN` fourni). Un agent Explore a confirmé **0 bug de logique**
|
||||
côté générateurs Python ; le défaut réel était dans le YAML CI.
|
||||
|
||||
**Défaut latent corrigé.** Les jobs `build-ios`/`build-android` gataient sur
|
||||
`if: secrets.EAS_TOKEN != '' …` **au niveau job**, où le `secrets` context n'est **pas**
|
||||
garanti (table d'availability GitHub : `jobs.<id>.if` = github/needs/vars/inputs/matrix
|
||||
seulement). Risque : le jour où Michel fournit un `EAS_TOKEN` valide, les builds
|
||||
resteraient **SKIP en silence**. Corrigé via le pattern canonique **preflight-output**
|
||||
(le secret est lu dans un step, exposé en `needs.preflight.outputs.has_token/has_repo`,
|
||||
gate consommé en `if:` — portable GitHub ET Gitea/act).
|
||||
|
||||
| Contrôle | Résultat |
|
||||
|---|---|
|
||||
| YAML `mobile-build.yml` | **valide** (`yaml.safe_load`) |
|
||||
| `secrets.` restant dans un `if:` de job | **0** ✓ |
|
||||
| `preflight.outputs` + `needs: preflight` (ios/android) | présents ✓ |
|
||||
| Contrat observable (preflight vert · builds SKIP sans token) | **inchangé** |
|
||||
| Gate de merge touché ? | **non** (workflow hors `gate.needs`) · `run_ci.sh` **32 PASS** |
|
||||
|
||||
**Impact stakeholder.** Quand Michel ajoutera le secret `EAS_TOKEN` (expo.dev · ~2 min)
|
||||
+ la variable `MOBILE_NATIVE_REPO`, les builds EAS se déclencheront désormais de façon
|
||||
**déterministe** — plus de dépendance à un comportement de contexte ambigu selon le moteur
|
||||
Actions. **0 chiffre inventé · 0 credential fabriqué.**
|
||||
|
||||
Reference in New Issue
Block a user