From 197898c01c60c1aac2eb25b36dc36522ebc7fc06 Mon Sep 17 00:00:00 2001 From: Shantur Rathore Date: Wed, 8 Apr 2026 20:34:08 +0100 Subject: [PATCH] feat(tauri): add zip bundle target for macOS and Windows - Add build scripts for platform-specific builds with zip bundles - Update CI workflow to use --bundles flag for explicit target selection - macOS: use app,zip (removed dmg) - Windows: use nsis,zip - Linux: use appimage,deb,rpm --- .github/workflows/build-and-upload.yml | 31 ++++++++++++++------ packages/tauri-app/package.json | 9 +++++- packages/tauri-app/src-tauri/tauri.conf.json | 3 +- 3 files changed, 32 insertions(+), 11 deletions(-) diff --git a/.github/workflows/build-and-upload.yml b/.github/workflows/build-and-upload.yml index 36d3e022..9e666e5e 100644 --- a/.github/workflows/build-and-upload.yml +++ b/.github/workflows/build-and-upload.yml @@ -378,7 +378,7 @@ jobs: - name: Build macOS bundle (Tauri) working-directory: packages/tauri-app - run: npm exec -- tauri build + run: npm exec -- tauri build --bundles app,zip - name: Package Tauri artifacts (macOS) if: ${{ inputs.upload || inputs.upload_actions_artifacts }} @@ -388,7 +388,9 @@ jobs: ARTIFACT_DIR="packages/tauri-app/release-tauri" rm -rf "$ARTIFACT_DIR" mkdir -p "$ARTIFACT_DIR" - if [ -d "$BUNDLE_ROOT/macos/CodeNomad.app" ]; then + if [ -f "$BUNDLE_ROOT/macos/CodeNomad.app.zip" ]; then + mv "$BUNDLE_ROOT/macos/CodeNomad.app.zip" "$ARTIFACT_DIR/CodeNomad-Tauri-${VERSION}-macos-x64.zip" + elif [ -d "$BUNDLE_ROOT/macos/CodeNomad.app" ]; then ditto -ck --sequesterRsrc --keepParent "$BUNDLE_ROOT/macos/CodeNomad.app" "$ARTIFACT_DIR/CodeNomad-Tauri-${VERSION}-macos-x64.zip" fi @@ -462,7 +464,7 @@ jobs: - name: Build macOS bundle (Tauri, arm64) working-directory: packages/tauri-app - run: npm exec -- tauri build + run: npm exec -- tauri build --bundles app,zip - name: Package Tauri artifacts (macOS arm64) if: ${{ inputs.upload || inputs.upload_actions_artifacts }} @@ -472,7 +474,9 @@ jobs: ARTIFACT_DIR="packages/tauri-app/release-tauri" rm -rf "$ARTIFACT_DIR" mkdir -p "$ARTIFACT_DIR" - if [ -d "$BUNDLE_ROOT/macos/CodeNomad.app" ]; then + if [ -f "$BUNDLE_ROOT/macos/CodeNomad.app.zip" ]; then + mv "$BUNDLE_ROOT/macos/CodeNomad.app.zip" "$ARTIFACT_DIR/CodeNomad-Tauri-${VERSION}-macos-arm64.zip" + elif [ -d "$BUNDLE_ROOT/macos/CodeNomad.app" ]; then ditto -ck --sequesterRsrc --keepParent "$BUNDLE_ROOT/macos/CodeNomad.app" "$ARTIFACT_DIR/CodeNomad-Tauri-${VERSION}-macos-arm64.zip" fi @@ -549,7 +553,7 @@ jobs: - name: Build Windows bundle (Tauri) shell: bash working-directory: packages/tauri-app - run: npm exec -- tauri build + run: npm exec -- tauri build --bundles nsis,zip - name: Package Tauri artifacts (Windows) if: ${{ inputs.upload || inputs.upload_actions_artifacts }} @@ -559,10 +563,19 @@ jobs: $artifactDir = "packages/tauri-app/release-tauri" if (Test-Path $artifactDir) { Remove-Item $artifactDir -Recurse -Force } New-Item -ItemType Directory -Path $artifactDir | Out-Null - $exe = Get-ChildItem -Path $bundleRoot -Recurse -File -Filter *.exe | Select-Object -First 1 - if ($null -ne $exe) { + + # Use Tauri-generated zip if available + $tauriZip = Get-ChildItem -Path "$bundleRoot/nsis" -Filter "*.zip" -File | Select-Object -First 1 + if ($null -ne $tauriZip) { $dest = Join-Path $artifactDir ("CodeNomad-Tauri-$env:VERSION-windows-x64.zip") - Compress-Archive -Path $exe.Directory.FullName -DestinationPath $dest -Force + Move-Item $tauriZip.FullName $dest -Force + } else { + # Fallback: manually zip the exe + $exe = Get-ChildItem -Path $bundleRoot -Recurse -File -Filter *.exe | Select-Object -First 1 + if ($null -ne $exe) { + $dest = Join-Path $artifactDir ("CodeNomad-Tauri-$env:VERSION-windows-x64.zip") + Compress-Archive -Path $exe.Directory.FullName -DestinationPath $dest -Force + } } - name: Upload Actions artifacts (Tauri Windows) @@ -648,7 +661,7 @@ jobs: - name: Build Linux bundle (Tauri) working-directory: packages/tauri-app - run: npm exec -- tauri build + run: npm exec -- tauri build --bundles appimage,deb,rpm - name: Package Tauri artifacts (Linux) if: ${{ inputs.upload || inputs.upload_actions_artifacts }} diff --git a/packages/tauri-app/package.json b/packages/tauri-app/package.json index 2be47336..96eee5c3 100644 --- a/packages/tauri-app/package.json +++ b/packages/tauri-app/package.json @@ -11,7 +11,14 @@ "sync:version": "node ./scripts/sync-tauri-version.js", "prebuild": "node ./scripts/prebuild.js", "bundle:server": "npm run prebuild", - "build": "tauri build" + "build": "tauri build", + "build:mac": "tauri build --target universal-apple-darwin --bundles app,zip", + "build:mac-arm": "tauri build --target aarch64-apple-darwin --bundles app,zip", + "build:mac-intel": "tauri build --target x86_64-apple-darwin --bundles app,zip", + "build:mac-zip": "tauri build --target universal-apple-darwin --bundles zip", + "build:win": "tauri build --bundles nsis,zip", + "build:win-zip": "tauri build --bundles zip", + "build:linux": "tauri build --bundles appimage,deb,rpm" }, "devDependencies": { "@tauri-apps/cli": "^2.9.4" diff --git a/packages/tauri-app/src-tauri/tauri.conf.json b/packages/tauri-app/src-tauri/tauri.conf.json index 8a1b4103..896fa9eb 100644 --- a/packages/tauri-app/src-tauri/tauri.conf.json +++ b/packages/tauri-app/src-tauri/tauri.conf.json @@ -52,10 +52,11 @@ ], "targets": [ "app", + "zip", "appimage", "deb", "rpm", "nsis" ] } -} +} \ No newline at end of file