ci: build and test every PR, release on tags, and add AUR packages #15

Merged
tri merged 4 commits from ci/gitea-actions-aur into main 2026-11-14 00:18:16 +07:00
Owner

Nothing checked a PR before merge, and there was no way to install QtPotato on Arch other than building it by hand. Now every PR gets built and tested, a v* tag makes a release, and there are AUR packages that build from source.

  • CI (.gitea/workflows/ci.yml): builds in an archlinux container and runs ctest (offscreen) on every PR and push to main. Arch only has x86_64 images, so both workflows run on the amd64 runner label (vm-201).
  • Release (.gitea/workflows/release.yml): on a v* tag, creates a Gitea release with the git archive source tarball, the AppImage and SHA256SUMS.
  • AUR (packaging/aur/): qtpotato builds from the release tarball, and qtpotato-git builds from main. There is no -bin package. update-pkgbuild.sh <version> sets pkgver and the checksum from a release and regenerates .SRCINFO. sha256sums stays SKIP until the first release exists.

playlistmodeltest now pins its locale. Under the container's C locale, QCollator ignores case-insensitivity, so the expected order failed. The app's own sort order under a C locale is a possible follow-up.

Pushing to the AUR from CI (optional in the issue) is left out. The AUR packages also need the repo to be public, because they download from git.trivk.dev.

Closes #11

Proof: makepkg of the qtpotato PKGBUILD from a local git archive tarball built, passed 8/8 tests and packaged. The playlist test failure was reproduced with LANG unset and with C.UTF-8, and passes after the fix. A probe of the release steps on vm-201 produced an x86-64 AppImage. CI runs on this PR (see checks).

Reviewed with sol-loop: 2 rounds with gpt-6.1-sol. Sol verdict: approved

Created with Claude Opus 5.5 in Claude Code (T3 Code).

Nothing checked a PR before merge, and there was no way to install QtPotato on Arch other than building it by hand. Now every PR gets built and tested, a `v*` tag makes a release, and there are AUR packages that build from source. - **CI** (`.gitea/workflows/ci.yml`): builds in an `archlinux` container and runs `ctest` (offscreen) on every PR and push to `main`. Arch only has x86_64 images, so both workflows run on the `amd64` runner label (vm-201). - **Release** (`.gitea/workflows/release.yml`): on a `v*` tag, creates a Gitea release with the `git archive` source tarball, the AppImage and `SHA256SUMS`. - **AUR** (`packaging/aur/`): `qtpotato` builds from the release tarball, and `qtpotato-git` builds from `main`. There is no `-bin` package. `update-pkgbuild.sh <version>` sets `pkgver` and the checksum from a release and regenerates `.SRCINFO`. `sha256sums` stays `SKIP` until the first release exists. `playlistmodeltest` now pins its locale. Under the container's C locale, `QCollator` ignores case-insensitivity, so the expected order failed. The app's own sort order under a C locale is a possible follow-up. Pushing to the AUR from CI (optional in the issue) is left out. The AUR packages also need the repo to be public, because they download from git.trivk.dev. Closes #11 Proof: `makepkg` of the `qtpotato` PKGBUILD from a local `git archive` tarball built, passed 8/8 tests and packaged. The playlist test failure was reproduced with `LANG` unset and with `C.UTF-8`, and passes after the fix. A probe of the release steps on vm-201 produced an x86-64 AppImage. CI runs on this PR (see checks). Reviewed with sol-loop: 2 rounds with gpt-6.1-sol. Sol verdict: approved Created with Claude Opus 5.5 in Claude Code (T3 Code).
tri added 4 commits 2026-11-14 00:11:39 +07:00
tri force-pushed ci/gitea-actions-aur from ec478f173c to 699530cf62 2026-11-14 00:11:39 +07:00 Compare
tri merged commit 8c57c9ddb6 into main 2026-11-14 00:18:16 +07:00
tri deleted branch ci/gitea-actions-aur 2026-11-14 00:19:51 +07:00
Sign in to join this conversation.