The README promised ISO downloads from a Releases page that does not and cannot exist here — the ISO was only ever built by a runner on the author's own forge. Say plainly that you build it yourself, and why no prebuilt image is published. Remove the last references to private infrastructure: the entry-point script's usage comment, the CI runner registration, the nginx template, the install doc's hardcoded user and its pointer to a private recovery doc, and the ISO publisher metadata. Add the MIT LICENSE the project needed to be reusable at all, a CHANGELOG, and GitHub CI — shellcheck, syntax, config validation, and a guard that fails the build if private infrastructure is ever referenced from this public repo again.
2.0 KiB
Automated ISO builds (Gitea Actions)
.gitea/workflows/build-iso.yml builds the ISO and publishes it as a Gitea
release so a current ISO is always a download away — no local build needed.
- When: the 2nd of each month (after Arch's monthly snapshot), on manual dispatch, and whenever the installer scripts change.
- Where: attached to a release tagged
iso-YYYY.MM.DDunder this repo's Releases. Keeps the last 6, prunes older.
One-time setup (required — the workflow needs a runner)
Building an ISO needs mkarchiso, which needs root + loop devices, so a
privileged runner is required.
-
Enable Actions for this repo: Settings → Actions → enable. (Site-wide it must be on:
[actions] ENABLED = truein Gitea'sapp.ini.) -
Register a runner (
act_runner) that can run privileged containers, with a label matchingruns-on: archlinuxin the workflow. On a Docker host:act_runner register --instance https://your-forge.example \ --token <from Gitea: Settings > Actions > Runners> \ --labels archlinux:docker://archlinux:latest --name iso-builder act_runner daemonThe runner's Docker must allow
--privileged(the workflow sets it per-job). A good home for it: a dedicated LXC/VM or the Docker host you already run. -
Release token (optional but recommended): add a repo secret
RELEASE_TOKEN(Settings → Actions → Secrets) = a Gitea PAT withwrite:repository. Without it the workflow falls back to the auto-injected token, which works if Actions token permissions allow release writes.
Trigger a build now
Repo → Actions → build-iso → Run workflow (uses workflow_dispatch).
Notes
- ISO assets are ~1 GB; make sure the repo's attachment size limit allows it
(
[repository.release] ALLOWED_TYPES/ attachment max size inapp.ini). - The ISO stays thin — it pulls the current
bootstrap.shat boot — so even a months-old ISO installs your latest config. The monthly rebuild mainly refreshes the kernel/base packages on the ISO itself.