Build & Release / Run Tests (push) Has been cancelled
Traceability Validation / Check Requirement Traces (push) Has been cancelled
Build & Release / Build Linux (push) Has been cancelled
Build & Release / Build Android (push) Has been cancelled
Publish Documentation / Build & publish docs to gitea-pages (push) Has been cancelled
🏗️ Build and Test JellyTau / Android Compile Check (push) Has been cancelled
Build & Release / Create Release (push) Has been cancelled
🏗️ Build and Test JellyTau / Run Tests (push) Has been cancelled
Adds Docker-based packaging for Linux desktop (deb/rpm), Arch
(.pkg.tar.zst via makepkg), and Windows. Windows cross-compiles from
Linux via the official Tauri path — the x86_64-pc-windows-msvc target
driven by cargo-xwin — and produces an NSIS installer (nsis via
tauri.conf.json targets, since the CLI rejects --bundles nsis on a Linux
host). Verified end to end: builds jellytau.exe + jellytau_x64-setup.exe.
Unifies everything on one registry builder image (Dockerfile.builder):
Android SDK/NDK, rpm/file, clang(+clang-cl)/lld/llvm/nsis, cargo-xwin and
the msvc target. Packaging tools sit in a trailing layer so tool changes
rebuild in ~1min instead of ~15. Desktop stages are thin FROM
${BUILDER_IMAGE} layers; Arch uses a separate archlinux image.
CLAUDE.md: CI must install no system toolchains — everything lives in the
image. Bumps version 0.0.18 -> 0.1.0 (Windows support + webview audio +
equalizer).
TRACES: UR-003, UR-005 | DR-004
45 lines
1.5 KiB
Bash
Executable File
45 lines
1.5 KiB
Bash
Executable File
#!/bin/bash
|
|
# Build Linux desktop packages (deb + rpm) for JellyTau.
|
|
#
|
|
# Produces bundles under src-tauri/target/release/bundle/{deb,rpm}.
|
|
# Runs on the existing Ubuntu builder image. NOTE: Tauri has no pacman bundle
|
|
# target — the Arch package is built separately with makepkg (scripts/build-arch.sh
|
|
# / Dockerfile.arch). `appimage` is also available if you want a portable bundle.
|
|
#
|
|
# Usage:
|
|
# scripts/build-desktop-linux.sh # deb + rpm
|
|
# BUNDLES="deb,appimage" scripts/build-desktop-linux.sh # subset / add appimage
|
|
# OUTPUT_DIR=/app/dist scripts/build-desktop-linux.sh # copy bundles out
|
|
set -euo pipefail
|
|
|
|
cd "$(dirname "$0")/.."
|
|
|
|
BUNDLES="${BUNDLES:-deb,rpm}"
|
|
|
|
echo "🐧 Building JellyTau Linux desktop packages"
|
|
echo "==========================================="
|
|
echo "Bundles: $BUNDLES"
|
|
echo ""
|
|
|
|
bun install --frozen-lockfile 2>/dev/null || bun install
|
|
bun run build
|
|
|
|
# --bundles overrides tauri.conf.json bundle.targets so this script controls
|
|
# exactly which Linux formats are produced (never NSIS here).
|
|
bun run tauri build --bundles "$BUNDLES"
|
|
|
|
BUNDLE_ROOT="src-tauri/target/release/bundle"
|
|
echo ""
|
|
echo "✅ Built packages:"
|
|
find "$BUNDLE_ROOT" -maxdepth 2 -type f \
|
|
\( -name '*.deb' -o -name '*.rpm' -o -name '*.AppImage' \) -print
|
|
|
|
if [[ -n "${OUTPUT_DIR:-}" ]]; then
|
|
mkdir -p "$OUTPUT_DIR"
|
|
find "$BUNDLE_ROOT" -maxdepth 2 -type f \
|
|
\( -name '*.deb' -o -name '*.rpm' -o -name '*.AppImage' \) \
|
|
-exec cp -v {} "$OUTPUT_DIR/" \;
|
|
echo ""
|
|
echo "📦 Copied bundles to $OUTPUT_DIR"
|
|
fi
|