TECH: CI — référencer ci-full par URL Forgejo directe taguée (@vN) au lieu de @main #126

Closed
opened 2026-08-14 15:27:33 +02:00 by nonobis · 1 comment
Owner

🎯 Contexte

Passe de revue the-reviewer du 2026-08-14 : la PR Heimdall#111 (fix/ci-url-forgejo-directe) bascule l'action composite ci-full de nonobis/templates sur une référence URL Forgejo directe (@main) et supprime le checkout .ci manuel. Cause racine : cache runner corrompu → exécution d'anciennes versions du workflow (tests E2E non filtrés, inputs SonarQube non passés). La PR n'est liée à AUCUN ticket → violation du process « PR par ticket ».

🧱 Description de la dette

  • Référence @main non reproductible : le comportement de la CI dépend du HEAD de nonobis/templates au moment du run.
  • Le process impose un ticket par PR ; ce correctif infra n'est porté par aucun ticket.
  • Le skill forgejo-pr-unified recommande une référence URL Forgejo directe + tag versionné : uses: https://forgejo.tordais.cc/nonobis/templates/.forgejo/actions/ci-full@vN (dernier tag connu : v5). À chaque évolution des templates : bump @vN (nouvelle URL = nouveau hash de cache runner).

⚠️ Impact

  • Sans tag, un bump de templates change silencieusement la CI de tous les projets.
  • Cache runner corrompu récurrent si un bump de templates n'est pas suivi d'un nouveau tag (@vN).
  • E2E non filtrés + SonarQube mal configuré en cas de régression.

🛠️ Correctif proposé

  1. Conserver la référence URL Forgejo directe (suppression du checkout .ci — déjà portée par la PR Heimdall#111).
  2. Publier un tag vN sur nonobis/templates et référencer ci-full@vN dans ce workflow.
  3. Référencer ce ticket dans la PR (Heimdall#111) via Fixes #N avant merge.
  4. Ne pas purger /var/run/act/* dans les steps de build (détruit event.json → SonarScanner KO) ; la purge du cache runner se fait sur la machine runner (/opt/forgejo-runner/work/), hors build.

✅ Definition of Done

  • Correctif appliqué + vérifié (CI verte)
  • Statut du ticket mis à jour (via skill forgejo-issues)
  • Carte kanban Hermes mise à jour (lien vers l'issue)
### 🎯 Contexte Passe de revue the-reviewer du 2026-08-14 : la PR Heimdall#111 (`fix/ci-url-forgejo-directe`) bascule l'action composite `ci-full` de `nonobis/templates` sur une référence URL Forgejo directe (`@main`) et supprime le checkout `.ci` manuel. Cause racine : cache runner corrompu → exécution d'anciennes versions du workflow (tests E2E non filtrés, inputs SonarQube non passés). La PR n'est liée à AUCUN ticket → violation du process « PR par ticket ». ### 🧱 Description de la dette - Référence `@main` non reproductible : le comportement de la CI dépend du HEAD de `nonobis/templates` au moment du run. - Le process impose un ticket par PR ; ce correctif infra n'est porté par aucun ticket. - Le skill `forgejo-pr-unified` recommande une référence **URL Forgejo directe + tag versionné** : `uses: https://forgejo.tordais.cc/nonobis/templates/.forgejo/actions/ci-full@vN` (dernier tag connu : `v5`). À chaque évolution des templates : bump `@vN` (nouvelle URL = nouveau hash de cache runner). ### ⚠️ Impact - Sans tag, un bump de `templates` change silencieusement la CI de tous les projets. - Cache runner corrompu récurrent si un bump de templates n'est pas suivi d'un nouveau tag (`@vN`). - E2E non filtrés + SonarQube mal configuré en cas de régression. ### 🛠️ Correctif proposé 1. Conserver la référence URL Forgejo directe (suppression du checkout `.ci` — déjà portée par la PR Heimdall#111). 2. Publier un tag `vN` sur `nonobis/templates` et référencer `ci-full@vN` dans ce workflow. 3. Référencer ce ticket dans la PR (Heimdall#111) via `Fixes #N` avant merge. 4. Ne pas purger `/var/run/act/*` dans les steps de build (détruit `event.json` → SonarScanner KO) ; la purge du cache runner se fait sur la machine runner (`/opt/forgejo-runner/work/`), hors build. ### ✅ Definition of Done - [ ] Correctif appliqué + vérifié (CI verte) - [ ] Statut du ticket mis à jour (via skill forgejo-issues) - [ ] Carte kanban Hermes mise à jour (lien vers l'issue)
Author
Owner

Résolu — l'approche retenue reste le checkout .ci local (templates PRIVÉ), pas l'URL directe.

Le correctif demandé (URL Forgejo directe ci-full@vN) est impossible en l'état : nonobis/templates est repassé en PRIVÉ le 13/08 → le runner clone l'action par URL avec le token auto du job, scopé au repo déclencheur → remote: User permission denied / 403 au tout premier step (piège documenté, constaté sur Givarr). Repasser templates public est une décision infra à part entière (le repo contient des scripts runners/Proxmox).

Le système actuel (checkout nonobis/templates dans .ci avec TEMPLATES_PAT + uses: ./.ci/.forgejo/actions/ci-full) fonctionne : le run 1999 exécutait le ci-full v5 à jour (cache runner purgé et vérifié).

Le vrai problème de CI des derniers jours était ailleurs : le step « Run .NET tests » du ci-full construisait TEST_PROJECTS avec des espaces → les greps matchaient la liste entière sur une ligne → exclusion E2E inopérante, tous les projets en série. Corrigé dans templates main (78cddf9) : séparateur newline + strip. Simulation vérifiée, PR #117/#118 re-trigger.

→ Ticket fermé ; la PR #111 (qui portait l'ancienne approche) est fermée avec le même diagnostic.

**Résolu — l'approche retenue reste le checkout `.ci` local (templates PRIVÉ), pas l'URL directe.** Le correctif demandé (URL Forgejo directe `ci-full@vN`) est **impossible en l'état** : `nonobis/templates` est repassé en PRIVÉ le 13/08 → le runner clone l'action par URL avec le token auto du job, scopé au repo déclencheur → `remote: User permission denied` / 403 au tout premier step (piège documenté, constaté sur Givarr). Repasser templates public est une décision infra à part entière (le repo contient des scripts runners/Proxmox). Le système actuel (checkout `nonobis/templates` dans `.ci` avec `TEMPLATES_PAT` + `uses: ./.ci/.forgejo/actions/ci-full`) **fonctionne** : le run 1999 exécutait le ci-full v5 à jour (cache runner purgé et vérifié). Le vrai problème de CI des derniers jours était ailleurs : le step « Run .NET tests » du ci-full construisait `TEST_PROJECTS` avec des espaces → les greps matchaient la liste entière sur une ligne → exclusion E2E inopérante, tous les projets en série. **Corrigé dans templates main (78cddf9)** : séparateur newline + strip. Simulation vérifiée, PR #117/#118 re-trigger. → Ticket fermé ; la PR #111 (qui portait l'ancienne approche) est fermée avec le même diagnostic.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
nonobis/Heimdall#126
No description provided.