Peregrine build server — CI builder and APK server sources
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Pyrrha (test) e008e6b84a
Some checks are pending
carin/review Carin review in progress...
Revert "test: verify buildrunner actions"
This reverts commit 8a1a108791.
2026-07-12 11:28:33 -04:00
apk-server Initial commit: ci-builder and apk-server sources 2026-07-11 21:20:12 -04:00
ci-builder Initial commit: ci-builder and apk-server sources 2026-07-11 21:20:12 -04:00
.gitignore Initial commit: ci-builder and apk-server sources 2026-07-11 21:20:12 -04:00
README.md Initial commit: ci-builder and apk-server sources 2026-07-11 21:20:12 -04:00

buildserv — Peregrine CI & APK Server

Build server infrastructure for the Peregrine Bluesky client.

Components

ci-builder

Go service that polls Forgejo for new commits and PRs, runs ./gradlew assembleDebug, copies APKs to the shared download directory, enforces retention (keep newest 3 per branch/ref), and reports commit status back to Forgejo. Listens on :9090.

apk-server

Go HTTP server that serves a web dashboard for builds, debug APK downloads, and release verification artifacts. Listens on :8000 (or $PORT). The dashboard proxies CI API calls to ci-builder on :9090.

Directory layout (on buildserv)

Path Purpose
/home/exedev/ci-builder/ ci-builder binary + source + logs
/home/exedev/apk-server/ apk-server binary + source
/home/exedev/apk-builds/ Debug APK storage (retention-managed)
/srv/peregrine/releases/ Release verification artifacts

Deployment

  1. Build both binaries: cd ci-builder && go build -o ci-builder . && cd ../apk-server && go build -o apk-server .
  2. Place binaries in their respective directories on buildserv
  3. Systemd units manage restarts — see /etc/systemd/system/ on buildserv

Retention policy

Debug APKs are pruned to the newest 3 per branch/ref. Files not matching the expected naming pattern (peregrine-<branch>-<commit>-<timestamp>.apk) are preserved for manual review. Retention runs after every successful build and fails open (retention errors don't fail the build).