fix(release): volg Forgejo-workflowruns per poging (#2294) #2325

Merged
brenno merged 1 commit from fix/2294-workflow-run-tracking into main 2026-10-06 16:46:44 +00:00
Owner

Sluit #2294.

Kern

/actions/tasks bevat alleen jobs die al aan een runner zijn toegewezen. Een workflowrun die nog in de wachtrij staat (queued/waiting, nog geen runner-taak) leek daardoor afwezig — met valse "geen run"-conclusies en onnodige herdispatches tot gevolg. Bovendien groepeerde de oude snapshot jobs op naam en pakte de hoogste taak-id, waardoor jobs van verschillende pogingen in één beeld konden versmelten.

Wijziging

  • Dispatches vragen met return_run_info: true meteen de run-id terug.
  • Geeft Forgejo geen run-info terug (204), dan wordt de nieuwste run voor ref+workflow uit /actions/runs gemined.
  • Alle snapshots komen voortaan uit GET /actions/runs/{run_id}/jobs: één run, één poging — oude en nieuwe attempts versmelten nooit.
  • Queued/waiting runs zonder runner-taak tellen als actief; --resume dispatchen daardoor geen tweede run.
  • Een onleesbare Forgejo-API wordt als onbekend gemeld, niet als afwezig.
  • De registry-tag blijft de eindpostconditie voor de scans-image; de groene run is slechts het sein om te verifiëren.

Tests

Nieuw: test/release_auto_run_tracking_test.dart —

  • queued run zonder runner-taak wordt als actief herkend;
  • dispatch met return_run_info werkt;
  • fallback resolvert de run uit de runlijst bij een 204;
  • een afgeronde oude poging versmelt niet met een nieuwe actieve;
  • een onleesbare API geeft onbekend/fout, niet "geen run";
  • de registry-postconditie blijft overeind.

Bestaande harnessen (race, gate_dispatch, website, version) zijn meegezet naar de runs/jobs-endpoints.

Verificatie

  • make check volledig groen (format, analyze, conventies, privacygrens, volledige testsuite, coverage, goldens).
  • Geen echte Forgejo-dispatch lokaal uitgevoerd: de tests zijn hermetisch met gemockte API. Devel-API-calls naar /actions/* hingen eerder al (zie #2305) — de endpointvormen zijn tegen de Forgejo Swagger-spec geverifieerd.

Generated with Devin

Sluit #2294. ## Kern `/actions/tasks` bevat alleen jobs die al aan een **runner** zijn toegewezen. Een workflowrun die nog in de wachtrij staat (queued/waiting, nog geen runner-taak) leek daardoor afwezig — met valse "geen run"-conclusies en onnodige herdispatches tot gevolg. Bovendien groepeerde de oude snapshot jobs op naam en pakte de hoogste taak-id, waardoor jobs van verschillende pogingen in één beeld konden versmelten. ## Wijziging - Dispatches vragen met `return_run_info: true` meteen de run-id terug. - Geeft Forgejo geen run-info terug (204), dan wordt de nieuwste run voor ref+workflow uit `/actions/runs` gemined. - Alle snapshots komen voortaan uit `GET /actions/runs/{run_id}/jobs`: één run, één poging — oude en nieuwe attempts versmelten nooit. - Queued/waiting runs zonder runner-taak tellen als actief; `--resume` dispatchen daardoor geen tweede run. - Een onleesbare Forgejo-API wordt als *onbekend* gemeld, niet als afwezig. - De registry-tag blijft de eindpostconditie voor de scans-image; de groene run is slechts het sein om te verifiëren. ## Tests Nieuw: `test/release_auto_run_tracking_test.dart` — - queued run zonder runner-taak wordt als actief herkend; - dispatch met `return_run_info` werkt; - fallback resolvert de run uit de runlijst bij een 204; - een afgeronde oude poging versmelt niet met een nieuwe actieve; - een onleesbare API geeft onbekend/fout, niet "geen run"; - de registry-postconditie blijft overeind. Bestaande harnessen (`race`, `gate_dispatch`, `website`, `version`) zijn meegezet naar de runs/jobs-endpoints. ## Verificatie - `make check` volledig groen (format, analyze, conventies, privacygrens, volledige testsuite, coverage, goldens). - Geen echte Forgejo-dispatch lokaal uitgevoerd: de tests zijn hermetisch met gemockte API. Devel-API-calls naar `/actions/*` hingen eerder al (zie #2305) — de endpointvormen zijn tegen de Forgejo Swagger-spec geverifieerd. Generated with [Devin](https://devin.ai)
/actions/tasks bevat alleen jobs die al aan een runner zijn toegewezen.
Een run in de wachtrij leek daardoor afwezig, wat valse "geen run"
-conclusies en onnodige herdispatches gaf. Dispatches vragen nu met
return_run_info de run-id terug (fallback: nieuwste run uit
/actions/runs), en alle snapshots komen uit /actions/runs/{id}/jobs —
één run, één poging, geen versmelting van oude en nieuwe attempts.
Onleesbare API-status wordt als onbekend gemeld, niet als afwezig.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
brenno merged commit dd0aecc79d into main 2026-10-06 16:46:44 +00:00
Sign in to join this conversation.
No description provided.