FROM node:24-bookworm AS build WORKDIR /workspace RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ build-essential \ clang \ curl \ file \ libayatana-appindicator3-dev \ libssl-dev \ libwebkit2gtk-4.1-dev \ libxdo-dev \ lld \ llvm \ nsis \ patchelf \ pkg-config \ librsvg2-dev \ wget \ && rm -rf /var/lib/apt/lists/* RUN curl https://sh.rustup.rs -sSf | sh -s -- -y --profile minimal ENV PATH="/root/.cargo/bin:$PATH" ENV CARGO_BUILD_JOBS=1 RUN rustup target add x86_64-pc-windows-msvc \ && cargo install --locked cargo-xwin COPY package.json ./ RUN npm install COPY . . RUN test -n "$TAURI_SIGNING_PRIVATE_KEY" RUN nice -n 10 npm run bundle:windows RUN set -eux; \ mkdir -p /desktop-artifacts; \ win="$(find src-tauri/target/x86_64-pc-windows-msvc/release/bundle/nsis -maxdepth 1 -type f -name '*-setup.exe' -print -quit)"; \ sig="$(find src-tauri/target/x86_64-pc-windows-msvc/release/bundle/nsis -maxdepth 1 -type f -name '*-setup.exe.sig' -print -quit)"; \ test -n "$win"; \ test -n "$sig"; \ cp "$win" /desktop-artifacts/fieldlens-print-windows-x64-setup.exe; \ cp "$sig" /desktop-artifacts/fieldlens-print-windows-x64-setup.exe.sig; \ curl -fsSL https://fieldlens-desktop-linux-build.arrowstack.dev/fieldlens-print-linux-x64.AppImage.sig -o /desktop-artifacts/fieldlens-print-linux-x64.AppImage.sig; \ win_sha="$(sha256sum /desktop-artifacts/fieldlens-print-windows-x64-setup.exe | awk '{print $1}')"; \ sha256sum /desktop-artifacts/fieldlens-print-windows-x64-setup.exe > /desktop-artifacts/SHA256SUMS; \ version="$(node -p "require('./package.json').version")"; \ printf '{\n "version": "%s",\n "notes": "FieldLens Print desktop update",\n "downloads": {\n "windows-x86_64": {\n "url": "https://fieldlens.arrowstack.dev/downloads/fieldlens-print-windows-x64-setup.exe",\n "sha256": "%s"\n },\n "linux-x86_64-deb": {\n "url": "https://fieldlens.arrowstack.dev/downloads/fieldlens-print-linux-x64.deb"\n }\n }\n}\n' "$version" "$win_sha" > /desktop-artifacts/release.json; \ VERSION="$version" node -e 'const fs=require("fs"); const version=process.env.VERSION; const platforms={ "windows-x86_64": { signature: fs.readFileSync("/desktop-artifacts/fieldlens-print-windows-x64-setup.exe.sig","utf8").trim(), url:"https://fieldlens.arrowstack.dev/downloads/fieldlens-print-windows-x64-setup.exe" }, "linux-x86_64": { signature: fs.readFileSync("/desktop-artifacts/fieldlens-print-linux-x64.AppImage.sig","utf8").trim(), url:"https://fieldlens.arrowstack.dev/downloads/fieldlens-print-linux-x64.AppImage" } }; fs.writeFileSync("/desktop-artifacts/latest.json", JSON.stringify({version,notes:"FieldLens Print desktop update",platforms},null,2)+"\n");' FROM nginx:1.27-alpine COPY --from=build /desktop-artifacts /usr/share/nginx/html EXPOSE 80