1.6 KiB
Gitea CI and rolling releases
Gitea Actions reads workflows from .gitea/workflows/. This repository has one
workflow:
flowchart LR
Main[Push to main] --> RR[rolling-release.yml]
RR --> Build[Build deb + extension + checksums]
Build --> API[Gitea release API]
API --> Tag[Move rolling tag]
API --> Release[Replace rolling prerelease]
Required repository configuration
Create a repository secret named RELEASE_TOKEN. It must be able to read the
repository and create/update tags, releases, and release assets. The workflow
references it as ${{ secrets.RELEASE_TOKEN }}; the value is never committed.
Rolling behavior
Each push to main runs tests and packaging. Manual dispatch is also available.
The publish script:
- Deletes the existing release associated with
rolling, if present. - Deletes and recreates the
rollingtag at the pushed commit using Gitea's repository tag API. - Creates a prerelease named with the commit prefix.
- Uploads the
.deb, extension ZIP, andSHA256SUMS.
The moving tag is intentionally mutable. This server's Swagger API exposes tag
replacement as DELETE /repos/{owner}/{repo}/tags/{tag} followed by
POST /repos/{owner}/{repo}/tags; the publisher uses that contract rather than
the unsupported Git refs patch route. Permanent releases should use reviewed
immutable tags after validating a rolling artifact.
Local rehearsal
npm ci
npm test
npm run package
cat dist/SHA256SUMS
Do not run the publish script locally unless GITEA_SERVER_URL,
GITEA_REPOSITORY, GITEA_SHA, and a write-capable RELEASE_TOKEN are
intentionally set.