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
This commit is contained in:
Shantur Rathore
2026-04-08 20:34:08 +01:00
parent 0c0cfd2d22
commit 197898c01c
3 changed files with 32 additions and 11 deletions

View File

@@ -378,7 +378,7 @@ jobs:
- name: Build macOS bundle (Tauri) - name: Build macOS bundle (Tauri)
working-directory: packages/tauri-app working-directory: packages/tauri-app
run: npm exec -- tauri build run: npm exec -- tauri build --bundles app,zip
- name: Package Tauri artifacts (macOS) - name: Package Tauri artifacts (macOS)
if: ${{ inputs.upload || inputs.upload_actions_artifacts }} if: ${{ inputs.upload || inputs.upload_actions_artifacts }}
@@ -388,7 +388,9 @@ jobs:
ARTIFACT_DIR="packages/tauri-app/release-tauri" ARTIFACT_DIR="packages/tauri-app/release-tauri"
rm -rf "$ARTIFACT_DIR" rm -rf "$ARTIFACT_DIR"
mkdir -p "$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" ditto -ck --sequesterRsrc --keepParent "$BUNDLE_ROOT/macos/CodeNomad.app" "$ARTIFACT_DIR/CodeNomad-Tauri-${VERSION}-macos-x64.zip"
fi fi
@@ -462,7 +464,7 @@ jobs:
- name: Build macOS bundle (Tauri, arm64) - name: Build macOS bundle (Tauri, arm64)
working-directory: packages/tauri-app working-directory: packages/tauri-app
run: npm exec -- tauri build run: npm exec -- tauri build --bundles app,zip
- name: Package Tauri artifacts (macOS arm64) - name: Package Tauri artifacts (macOS arm64)
if: ${{ inputs.upload || inputs.upload_actions_artifacts }} if: ${{ inputs.upload || inputs.upload_actions_artifacts }}
@@ -472,7 +474,9 @@ jobs:
ARTIFACT_DIR="packages/tauri-app/release-tauri" ARTIFACT_DIR="packages/tauri-app/release-tauri"
rm -rf "$ARTIFACT_DIR" rm -rf "$ARTIFACT_DIR"
mkdir -p "$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" ditto -ck --sequesterRsrc --keepParent "$BUNDLE_ROOT/macos/CodeNomad.app" "$ARTIFACT_DIR/CodeNomad-Tauri-${VERSION}-macos-arm64.zip"
fi fi
@@ -549,7 +553,7 @@ jobs:
- name: Build Windows bundle (Tauri) - name: Build Windows bundle (Tauri)
shell: bash shell: bash
working-directory: packages/tauri-app working-directory: packages/tauri-app
run: npm exec -- tauri build run: npm exec -- tauri build --bundles nsis,zip
- name: Package Tauri artifacts (Windows) - name: Package Tauri artifacts (Windows)
if: ${{ inputs.upload || inputs.upload_actions_artifacts }} if: ${{ inputs.upload || inputs.upload_actions_artifacts }}
@@ -559,10 +563,19 @@ jobs:
$artifactDir = "packages/tauri-app/release-tauri" $artifactDir = "packages/tauri-app/release-tauri"
if (Test-Path $artifactDir) { Remove-Item $artifactDir -Recurse -Force } if (Test-Path $artifactDir) { Remove-Item $artifactDir -Recurse -Force }
New-Item -ItemType Directory -Path $artifactDir | Out-Null 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") $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) - name: Upload Actions artifacts (Tauri Windows)
@@ -648,7 +661,7 @@ jobs:
- name: Build Linux bundle (Tauri) - name: Build Linux bundle (Tauri)
working-directory: packages/tauri-app working-directory: packages/tauri-app
run: npm exec -- tauri build run: npm exec -- tauri build --bundles appimage,deb,rpm
- name: Package Tauri artifacts (Linux) - name: Package Tauri artifacts (Linux)
if: ${{ inputs.upload || inputs.upload_actions_artifacts }} if: ${{ inputs.upload || inputs.upload_actions_artifacts }}

View File

@@ -11,7 +11,14 @@
"sync:version": "node ./scripts/sync-tauri-version.js", "sync:version": "node ./scripts/sync-tauri-version.js",
"prebuild": "node ./scripts/prebuild.js", "prebuild": "node ./scripts/prebuild.js",
"bundle:server": "npm run prebuild", "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": { "devDependencies": {
"@tauri-apps/cli": "^2.9.4" "@tauri-apps/cli": "^2.9.4"

View File

@@ -52,10 +52,11 @@
], ],
"targets": [ "targets": [
"app", "app",
"zip",
"appimage", "appimage",
"deb", "deb",
"rpm", "rpm",
"nsis" "nsis"
] ]
} }
} }