feat: implement Gitea CI workflows for release and testing, enhance build script for multi-platform support
tests / python (3.10) (push) Failing after 7s
tests / python (3.11) (push) Successful in 15s
tests / web (push) Successful in 40s

This commit is contained in:
Netherwarlord
2026-07-29 05:16:43 -04:00
parent ee7b266d45
commit 22011ce6ac
6 changed files with 491 additions and 15 deletions
+18 -6
View File
@@ -467,7 +467,8 @@ from one origin.
## Building a release
```bash
python packaging/build.py # archive for the current platform
python packaging/build.py --platform all # the whole release set
python packaging/build.py # just the current platform
python packaging/build.py --platform linux # or windows / macos
python packaging/build.py --skip-web # reuse an existing web/dist
```
@@ -483,16 +484,27 @@ Only files `git ls-files` reports get copied, plus `web/dist`. Local models,
results, settings and virtual environments cannot leak into an archive even
if they are sitting in the working tree.
**Via GitHub Actions**`.github/workflows/release.yml` builds all three on
`windows-latest`, `ubuntu-latest` and `macos-latest`. Pushing a `v*` tag builds
the archives and opens a **draft** release with them attached; `workflow_dispatch`
builds and uploads artifacts without creating a release, which is the way to
test the pipeline.
### In CI
Workflows exist for both forges. Pushing a `v*` tag produces a **draft** release
with the three archives attached; `workflow_dispatch` builds them without
creating a release, which is how to test the pipeline before a tag exists.
```bash
git tag v2.0.0 && git push origin v2.0.0
```
| | Builds on | Publishes with |
|---|---|---|
| `.github/workflows/release.yml` | `windows-latest`, `ubuntu-latest`, `macos-latest` | `softprops/action-gh-release` |
| `.gitea/workflows/release.yml` | one `ubuntu-latest` runner | `packaging/publish_gitea.py` |
The Gitea one needs only a single runner because the cross-build makes the
archives independent of build host — see
[packaging/GITEA-SETUP.md](packaging/GITEA-SETUP.md) for runner registration and
the `GITEA_TOKEN` secret. `publish_gitea.py` is stdlib-only and idempotent:
re-running on the same tag replaces assets rather than duplicating them.
---
## Extending