ci(forgejo): limit json_field extraction to top-level keys #30

Merged
notazof merged 1 commit from fix/forgejo-release-json-field-id into release/1.0.6 2026-08-17 03:26:54 +01:00
Owner

Le run Forgejo Actions du tag 1.0.6 échoue au step publication avec 404 The target couldn't be found sur le PATCH /releases/<id>.

Cause : json_field matche la première occurrence globale de "id":<num> dans la réponse JSON de Forgejo. L'objet release a un id racine (ex. 10706) et un objet imbriqué author qui contient aussi un id (souvent 1 pour le premier user). La regex prenait author.id=1, donc le PATCH visait /releases/1 qui n'existe pas → 404.

Confirmé par un test direct via curl sur l'API : GET renvoie bien id=10706 à la racine, l'auteur est id=1 dans l'objet imbriqué.

Fix : head -3 avant sed pour ne matcher que les premières lignes (préambule de l'objet release). Sur la sortie JSON pretty-printed de Forgejo, l'id racine est sur la première ligne. Sur une sortie minifiée, head -3 renvoie toute la ligne mais l'id racine reste le premier matché.

À plus long terme, ajouter jq à l'image runner (pazof/yavsc-build-env) simplifierait ces extractions — note pour le prochain bump d'image.

Le run Forgejo Actions du tag `1.0.6` échoue au step publication avec `404 The target couldn't be found` sur le PATCH `/releases/<id>`. **Cause** : `json_field` matche la première occurrence globale de `"id":<num>` dans la réponse JSON de Forgejo. L'objet release a un id racine (ex. 10706) **et** un objet imbriqué `author` qui contient aussi un `id` (souvent 1 pour le premier user). La regex prenait `author.id=1`, donc le PATCH visait `/releases/1` qui n'existe pas → 404. Confirmé par un test direct via `curl` sur l'API : GET renvoie bien `id=10706` à la racine, l'auteur est `id=1` dans l'objet imbriqué. **Fix** : `head -3` avant `sed` pour ne matcher que les premières lignes (préambule de l'objet release). Sur la sortie JSON pretty-printed de Forgejo, l'id racine est sur la première ligne. Sur une sortie minifiée, head -3 renvoie toute la ligne mais l'id racine reste le premier matché. À plus long terme, ajouter `jq` à l'image runner (`pazof/yavsc-build-env`) simplifierait ces extractions — note pour le prochain bump d'image.
L'API Forgejo renvoie pour /releases/tags/<tag> un objet JSON
pretty-printed où l'id racine (release.id, ex. 10706) est sur la
première ligne, mais l'objet author contient aussi un id (souvent 1
pour le premier user du repo). L'ancienne regex sed matchait la
première occurrence globale de "id" dans le fichier, donc elle
retombait sur author.id=1 et le PATCH /releases/1 tombait en 404
'The target couldn't be found'.

Fix : on pipe le fichier dans 'head -3' pour ne matcher que les
premières lignes (couvre largement le préambule de l'objet release).
Si Forgejo renvoie du JSON minifié (une seule ligne), head -3
renvoie toute la ligne et la regex matche le premier id (la racine,
parce que les champs auteur sont après les champs racine).
notazof merged commit 2f443e5450 into release/1.0.6 2026-08-17 03:26:54 +01:00
Sign in to join this conversation.
No reviewers
No labels
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
notazof/yavsc!30
No description provided.