# Linux release bundles (.deb + .rpm) for the Gitea release, built in a clean Debian 12 container: # docker buildx build --platform linux/amd64 -f kestrove-desktop/scripts/linux.Dockerfile \ # --target out -o type=local,dest=release/desktop .. # Build context = the folder holding kestrove-core and kestrove-desktop. Debian 12's glibc (2.36) keeps # the packages installable on current distributions. No AppImage here: its runtime (and linuxdeploy) can't run # under the QEMU emulation used when building amd64 on Apple silicon; build it on a real x86_64 host. FROM rust:1-bookworm AS build RUN apt-get update && apt-get install -y --no-install-recommends \ libwebkit2gtk-4.1-dev libayatana-appindicator3-dev librsvg2-dev libssl-dev libxdo-dev \ libsecret-1-dev file patchelf xdg-utils curl ca-certificates \ && curl -fsSL https://deb.nodesource.com/setup_22.x | bash - && apt-get install -y nodejs \ && rm -rf /var/lib/apt/lists/* WORKDIR /src COPY kestrove-core kestrove-core COPY kestrove-desktop kestrove-desktop WORKDIR /src/kestrove-desktop RUN npm ci --no-audit --no-fund # Separate steps so a packaging failure keeps the compile in the layer cache. RUN cd src-tauri && cargo build --release --bins RUN npm run tauri build -- --bundles deb RUN npm run tauri build -- --bundles rpm FROM scratch AS out COPY --from=build /src/kestrove-desktop/src-tauri/target/release/bundle/rpm/*.rpm / COPY --from=build /src/kestrove-desktop/src-tauri/target/release/bundle/deb/*.deb / COPY --from=build /src/kestrove-desktop/src-tauri/target/release/kestrove-nmh /kestrove-nmh-linux-x86_64