fix(deploy): serialize CLI/APK/AppImage builds to avoid cargo target contention

The v0.7.0 release surfaced a real bug: parallel cargo invocations
all writing to target/ caused linuxdeploy to fail mid-AppImage bundle
("Error failed to bundle project failed to run linuxdeploy"). Cargo's
own target-dir locking doesn't fully serialize three concurrent
cargo-front-ends across CLI + Android-cross-compile + tauri-bundle.

Solo cargo tauri build succeeded immediately after deploy.sh aborted,
confirming the parallel invocation was the root cause.

Switching to serial builds. The extra wall time is small because
cargo's incremental cache deduplicates compilation of the shared
itsgoin-core crate across the three builds.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Scott Reimers 2026-05-14 21:12:51 -06:00
parent ad9282f24a
commit ec393c7f85

View file

@ -21,23 +21,20 @@ KS_ALIAS="itsgoin"
VERSION=$(grep '"version"' crates/tauri-app/tauri.conf.json | head -1 | sed 's/.*"\([0-9.]*\)".*/\1/') VERSION=$(grep '"version"' crates/tauri-app/tauri.conf.json | head -1 | sed 's/.*"\([0-9.]*\)".*/\1/')
echo "=== Deploying v${VERSION} ===" echo "=== Deploying v${VERSION} ==="
# Build CLI # Builds run SERIALLY — parallel cargo invocations write to the same
echo "=== Building CLI ===" # target/ directory, which causes intermittent failures (linuxdeploy
cargo build -p itsgoin-cli --release & # blowing up mid-AppImage was the v0.7.0 release symptom). The extra
CLI_PID=$! # wall time vs. the parallel version is small because cargo's
# incremental cache deduplicates the shared core crate compilation.
# Build APK echo "=== Building AppImage (includes GStreamer patch) ==="
echo "=== Building APK ==="
cargo tauri android build --apk &
APK_PID=$!
# Build AppImage (includes GStreamer patch)
echo "=== Building AppImage ==="
./build-appimage.sh ./build-appimage.sh
wait $CLI_PID
echo "=== CLI build complete ===" echo "=== Building APK ==="
wait $APK_PID cargo tauri android build --apk
echo "=== APK build complete ==="
echo "=== Building CLI ==="
cargo build -p itsgoin-cli --release
# Sign APK # Sign APK
echo "=== Signing APK ===" echo "=== Signing APK ==="