ci(forgejo): rewrite release workflow in pure bash + curl #25

Merged
notazof merged 1 commit from fix/forgejo-release-native-bash into release/1.0.6 2026-08-17 01:45:55 +01:00
Owner

Le job validate-release du workflow release Forgejo échoue au démarrage du container avec exec: "node": executable file not found in $PATH.

L'image Docker du runner (pazof/yavsc-build-env:debian12-dotnet10-android36-v1) n'a pas Node.js. Toute action Node-based (actions/checkout@v7, actions/upload-artifact@v7, rasterstate/forgejo-release-action) plante au docker exec initial.

Fix : réécriture complète du workflow en bash + curl, sans aucune action tierce.

  • actions/checkout remplacé par git clone + git fetch --tags + git checkout $TAG explicites (full history, tags inclus → GitVersion.MsBuild content).
  • Les 2 jobs fusionnés en 1 (pas de transfert inter-jobs nécessaire, tout est dans le même filesystem).
  • rasterstate/forgejo-release-action remplacée par des appels directs à l'API REST Forgejo (/api/v1/repos/.../releases, /api/v1/.../assets), avec python3 pour générer/parser le JSON (jq non garanti dans l'image).
  • Auth inchangée : ${{ secrets.GITHUB_TOKEN }} (runner-provided).
  • La logique validate-release (parité patch + section CHANGELOG cohérente) est préservée à l'identique.

Suite : si l'image runner est mise à jour pour inclure Node, on peut revenir à l'action tierce en revertant ce commit.

Le job `validate-release` du workflow release Forgejo échoue au démarrage du container avec `exec: "node": executable file not found in $PATH`. L'image Docker du runner (`pazof/yavsc-build-env:debian12-dotnet10-android36-v1`) n'a pas Node.js. Toute action Node-based (`actions/checkout@v7`, `actions/upload-artifact@v7`, `rasterstate/forgejo-release-action`) plante au `docker exec` initial. **Fix** : réécriture complète du workflow en bash + curl, sans aucune action tierce. - `actions/checkout` remplacé par `git clone` + `git fetch --tags` + `git checkout $TAG` explicites (full history, tags inclus → `GitVersion.MsBuild` content). - Les 2 jobs fusionnés en 1 (pas de transfert inter-jobs nécessaire, tout est dans le même filesystem). - `rasterstate/forgejo-release-action` remplacée par des appels directs à l'API REST Forgejo (`/api/v1/repos/.../releases`, `/api/v1/.../assets`), avec `python3` pour générer/parser le JSON (jq non garanti dans l'image). - Auth inchangée : `${{ secrets.GITHUB_TOKEN }}` (runner-provided). - La logique validate-release (parité patch + section CHANGELOG cohérente) est préservée à l'identique. **Suite** : si l'image runner est mise à jour pour inclure Node, on peut revenir à l'action tierce en revertant ce commit.
The runner's docker label points at pazof/yavsc-build-env, a Debian
image without Node.js. Any action like actions/checkout@v7,
actions/upload-artifact@v7, rasterstate/forgejo-release-action, etc.
fails at container start with 'executable file not found in /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/home/paul/.dotnet/tools:/opt/android-sdk/cmdline-tools/latest/bin:/opt/android-sdk/platform-tools:/home/paul/.nvm/versions/node/v22.23.0/bin:/home/paul/.local/bin:/home/paul/.npm-global/bin:/home/paul/bin:/home/paul/.nix-profile/bin'.

This workflow is rewritten in pure bash:
- replace actions/checkout with explicit git clone + checkout (full
  history + tags so GitVersion.MsBuild is happy);
- merge the two jobs into one (no inter-job artifacts needed since
  everything shares the runner's filesystem);
- replace rasterstate/forgejo-release-action with direct calls to the
  Forgejo REST API (/api/v1/repos/.../releases, .../assets), with
  python3 used to build and parse JSON bodies (jq not guaranteed in
  the runner image).

Auth: ${{ secrets.GITHUB_TOKEN }} (runner-provided). The
rasterstate action or any other Node-based action can be reinstated
later if the runner image is swapped for one with Node installed.
notazof merged commit f2776b34e3 into release/1.0.6 2026-08-17 01:45:55 +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!25
No description provided.