Builds rootfs tarballs for Droidspaces from Dockerfiles,
publishes them as GitHub releases, and regenerates rootfs.json on every release.
archs.json supported architectures -> docker platform + CI runner
build.sh builds one template for one arch
templates/<arch>/<Name>.Dockerfile
scripts/generate_rootfs_json.py
rootfs.json generated, do not edit by hand
Create templates/<arch>/<Name>.Dockerfile. That is the whole change.
The Dockerfile must end with an export stage carrying the metadata labels:
FROM scratch AS export
LABEL droidspaces.name="Ubuntu 24.04 LTS - Minimal" \
droidspaces.distro="Ubuntu" \
droidspaces.description="Minimal Ubuntu 24.04 rootfs with basic packages." \
droidspaces.author="Droidspaces developers"
COPY --from=customizer / /name, distro, and description are required. author defaults to "Droidspaces developers".
Any extra droidspaces.<key> label is copied into the rootfs.json entry as <key>.
Build context is the repo root, so COPY scripts/... works from any template.
Add a key to archs.json and create templates/<arch>/.
./build.sh -a aarch64 -i Ubuntu-24.04-MinimalNeeds docker with buildx, jq, and xz. QEMU is registered automatically when the host cannot run the target platform natively.
python3 scripts/generate_rootfs_json.py --lint.github/workflows/build-rootfs-releases.yml runs on push to main, weekly, or by hand.
It lints labels, builds every template in parallel on the runner for its arch, creates one
release with all tarballs, then regenerates and commits rootfs.json. Any failed build
blocks the release. The manual "update_json_only" input regenerates rootfs.json from the
current latest release without building.