Poser une CI Forgejo Actions sur ce depot #24

Closed
opened 2026-08-16 18:28:49 +00:00 by maximus · 1 comment
Owner

Contexte

Constat structurel remonte par la review de la pile #18-#23 : ce depot n'a aucune CI (ni .forgejo/workflows/ ni .github/). Aucun maillon de la derniere vague n'a ete verifie par une machine ; les runs locaux lances a la main ont ete la seule barriere.

Le depot a de quoi faire tourner une CI utile : npm test (301 cas au 2026-09-27), test-curl.sh (45 cas au niveau socket), runtime 0-dependance, node:22-alpine.

Analyse (2026-09-27)

  • Runner : linux-builder est a portee instance depuis le 2026-08-12 (jobs verts sur roadtrip et simpl-resultat le 2026-09-27, has_actions: true ici). Le critere d'origine « enregistrer le runner au niveau de ce depot » est perime : rien a re-enregistrer.
  • Build de l'image : les jobs tournent dans un container:. Un vrai docker build exigerait de monter le socket Docker dans le runner d'instance, ce qui rendrait tout workflow de tout depot root sur le VPS de prod. Retenu a la place : un demarrage depuis le seul jeu de fichiers du COPY, dans node:22-alpine (la base de prod). C'est ce qui attrape le MODULE_NOT_FOUND de #11.
  • test-curl.sh : ajoute a la CI en etape separee (seul garde automatique du 413 rendu avant la coupure et du 503 sans HOSTS_INGEST_TOKEN).

Travail a faire

  • .forgejo/workflows/ci.yml : pull_request sans filtre branches: + push: branches: [main], choix commente
  • Job en container: node:22-alpine, apk add git bash curl avant le checkout
  • Etapes : npm ci, npm test, bash test-curl.sh, demarrage depuis le COPY (fichiers de la ligne COPY du Dockerfile copies dans un dossier vide, node index.js en utilisateur node, 401 attendu sur /health)
  • CLAUDE.md : mention de la CI, nombre de tests a jour

Criteres d'acceptation

  • ci.yml execute npm ci, npm test, test-curl.sh et le demarrage depuis le COPY, sur toute PR et sur push vers main
  • Pas de filtre branches: sur pull_request (les maillons intermediaires d'une pile sont batis), commentaire a l'appui
  • Le demarrage depuis le COPY echoue quand un module runtime manque au COPY — demontre une fois sur la branche
  • Une PR de test porte un statut de commit vert

Complexite

Simple a medium : YAML court, le risque est dans le premier passage sur le runner.

Ref : skill diag-forgejo-ci, la-compagnie-maximus/docs/forgejo-ops.md.

## Contexte Constat structurel remonte par la review de la pile #18-#23 : ce depot n'a aucune CI (ni `.forgejo/workflows/` ni `.github/`). Aucun maillon de la derniere vague n'a ete verifie par une machine ; les runs locaux lances a la main ont ete la seule barriere. Le depot a de quoi faire tourner une CI utile : `npm test` (301 cas au 2026-09-27), `test-curl.sh` (45 cas au niveau socket), runtime 0-dependance, `node:22-alpine`. ## Analyse (2026-09-27) - **Runner** : `linux-builder` est a portee instance depuis le 2026-08-12 (jobs verts sur roadtrip et simpl-resultat le 2026-09-27, `has_actions: true` ici). Le critere d'origine « enregistrer le runner au niveau de ce depot » est perime : rien a re-enregistrer. - **Build de l'image** : les jobs tournent dans un `container:`. Un vrai `docker build` exigerait de monter le socket Docker dans le runner d'instance, ce qui rendrait tout workflow de tout depot root sur le VPS de prod. Retenu a la place : un demarrage depuis le seul jeu de fichiers du `COPY`, dans `node:22-alpine` (la base de prod). C'est ce qui attrape le `MODULE_NOT_FOUND` de #11. - **test-curl.sh** : ajoute a la CI en etape separee (seul garde automatique du 413 rendu avant la coupure et du 503 sans `HOSTS_INGEST_TOKEN`). ## Travail a faire - [ ] `.forgejo/workflows/ci.yml` : `pull_request` sans filtre `branches:` + `push: branches: [main]`, choix commente - [ ] Job en `container: node:22-alpine`, `apk add git bash curl` avant le checkout - [ ] Etapes : `npm ci`, `npm test`, `bash test-curl.sh`, demarrage depuis le COPY (fichiers de la ligne `COPY` du Dockerfile copies dans un dossier vide, `node index.js` en utilisateur `node`, 401 attendu sur `/health`) - [ ] `CLAUDE.md` : mention de la CI, nombre de tests a jour ## Criteres d'acceptation - [ ] `ci.yml` execute `npm ci`, `npm test`, `test-curl.sh` et le demarrage depuis le COPY, sur toute PR et sur `push` vers `main` - [ ] Pas de filtre `branches:` sur `pull_request` (les maillons intermediaires d'une pile sont batis), commentaire a l'appui - [ ] Le demarrage depuis le COPY echoue quand un module runtime manque au `COPY` — demontre une fois sur la branche - [ ] Une PR de test porte un statut de commit vert ## Complexite Simple a medium : YAML court, le risque est dans le premier passage sur le runner. Ref : skill `diag-forgejo-ci`, `la-compagnie-maximus/docs/forgejo-ops.md`.
maximus added the
status:ready
type:infra
source:human
labels 2026-08-16 18:28:49 +00:00
maximus added
status:review
and removed
status:ready
labels 2026-09-28 00:23:02 +00:00
maximus added
status:approved
and removed
status:review
labels 2026-09-28 00:39:12 +00:00
Author
Owner

Livré par la PR #31, mergée en fast-forward sur main (4e7879d). Le commit dit Refs #24, fermeture manuelle.

Livré par la PR #31, mergée en fast-forward sur `main` (`4e7879d`). Le commit dit `Refs #24`, fermeture manuelle.
maximus removed the
status:approved
label 2026-09-28 00:51:02 +00:00
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: maximus/vps-health-api#24
No description provided.