Both workflows now run on `release: published` and attach the built
archives to the release the user creates, rather than pushing a tag and
having the workflow create the release. Tag comes from the release event;
GitHub no longer regenerates release notes. Docs updated accordingly.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The golang:1.22-bookworm container has no node binary and Codeberg's
runner does not inject one, so checkout/forgejo-release failed with
'node: not found'. Add a pre-checkout run step (which executes via the
container shell and needs no node itself) to apt-install nodejs before
the JS-based actions run.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Codeberg's hosted runners are tagged codeberg-tiny/small/medium (+ -lazy),
not 'docker', so the job was never picked up ('No active runner with tag
docker'). The three CGO cross-compiles exceed the non-lazy 10 min cap, so
use the medium -lazy runner, which relaxes the wall-clock limit.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Add tag-triggered CI that builds and publishes the linux/amd64,
linux/arm64, and windows/amd64 release binaries on both forges.
- scripts/ci-build-release.sh: shared, Docker-free build+package for all
three targets (Windows cross-compiled via MinGW), reused by both
workflows so the build logic lives in one place.
- .github/workflows/release.yml: GitHub Actions, publishes via
softprops/action-gh-release using the built-in token.
- .forgejo/workflows/release.yml: Forgejo Actions for Codeberg, publishes
via forgejo-release using a RELEASE_TOKEN secret.
- .gitattributes: force LF on workflow YAML so bash run: blocks don't
break on Linux runners.
- docs/DEVELOPMENT.md: document the tag -> release flow and token setup.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>