ci(release): disable tauri-action updater repack, upload .sig ourselves

Root cause: tauri-action runs a second "Packaging" pass after tauri CLI
finishes, which rewrites src-tauri/target/<target>/release/bundle/macos/
Psysonic.app.tar.gz with different bytes. The .sig produced by tauri CLI
no longer matches the new hash, so tauri-action silently deletes it —
leaving the directory with only .app and .app.tar.gz (no .sig for our
manifest generator to consume).

Fix: pass `includeUpdaterJson: false` to tauri-action so it skips the
repack + updater JSON upload entirely, then copy both the .app.tar.gz
and .app.tar.gz.sig produced by tauri CLI into the workspace root with
the expected asset names and `gh release upload` them.

Also disables build-linux and the Windows matrix entry during testing
to cut iteration time roughly in half.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Psychotoxical
2026-04-18 15:19:33 +02:00
parent 43df830960
commit 425addffa0
5 changed files with 28 additions and 23 deletions
+24 -19
View File
@@ -83,8 +83,10 @@ jobs:
args: '--target aarch64-apple-darwin' args: '--target aarch64-apple-darwin'
- platform: 'macos-latest' - platform: 'macos-latest'
args: '--target x86_64-apple-darwin' args: '--target x86_64-apple-darwin'
- platform: 'windows-latest' # TEMPORARILY DISABLED during macOS updater testing — faster turnaround.
args: '--bundles nsis' # Re-add before the next public release.
# - platform: 'windows-latest'
# args: '--bundles nsis'
runs-on: ${{ matrix.settings.platform }} runs-on: ${{ matrix.settings.platform }}
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@v5
@@ -128,35 +130,35 @@ jobs:
with: with:
releaseId: ${{ needs.create-release.outputs.release_id }} releaseId: ${{ needs.create-release.outputs.release_id }}
args: ${{ matrix.settings.args }} args: ${{ matrix.settings.args }}
- name: upload updater signature (macOS only) # Disable tauri-action's own .app.tar.gz re-packaging + updater JSON
# upload — its repack overwrites the .app.tar.gz produced by tauri
# CLI and invalidates the matching .sig (the tauri-created signature
# no longer matches the repacked tarball's hash, so tauri-action
# silently drops the .sig). We upload both files ourselves below,
# and the generate-manifest job assembles latest.json.
includeUpdaterJson: false
- name: upload updater bundle + signature (macOS only)
if: runner.os == 'macOS' if: runner.os == 'macOS'
env: env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: | run: |
set -x set -e
VERSION=${{ needs.create-release.outputs.package_version }} VERSION=${{ needs.create-release.outputs.package_version }}
TARGET_ARG='${{ matrix.settings.args }}' TARGET_ARG='${{ matrix.settings.args }}'
if echo "$TARGET_ARG" | grep -q 'aarch64'; then if echo "$TARGET_ARG" | grep -q 'aarch64'; then
TARGET="aarch64-apple-darwin" TARGET="aarch64-apple-darwin"
DST="Psysonic_aarch64.app.tar.gz.sig" ARCH="aarch64"
else else
TARGET="x86_64-apple-darwin" TARGET="x86_64-apple-darwin"
DST="Psysonic_x64.app.tar.gz.sig" ARCH="x64"
fi fi
BUNDLE_DIR="src-tauri/target/${TARGET}/release/bundle/macos" BUNDLE_DIR="src-tauri/target/${TARGET}/release/bundle/macos"
echo "=== Listing $BUNDLE_DIR ===" cp "${BUNDLE_DIR}/Psysonic.app.tar.gz" "Psysonic_${ARCH}.app.tar.gz"
ls -la "$BUNDLE_DIR" || true cp "${BUNDLE_DIR}/Psysonic.app.tar.gz.sig" "Psysonic_${ARCH}.app.tar.gz.sig"
echo "=== Searching whole target tree for .sig ===" gh release upload "app-v${VERSION}" \
find "src-tauri/target" -name '*.sig' -type f 2>/dev/null || true "Psysonic_${ARCH}.app.tar.gz" \
"Psysonic_${ARCH}.app.tar.gz.sig" \
SIG="${BUNDLE_DIR}/Psysonic.app.tar.gz.sig" --clobber
if [ ! -f "$SIG" ]; then
echo "::error::Signature not at expected path: $SIG"
exit 1
fi
cp "$SIG" "$DST"
gh release upload "app-v${VERSION}" "$DST" --clobber
generate-manifest: generate-manifest:
needs: [create-release, build-macos-windows] needs: [create-release, build-macos-windows]
@@ -178,6 +180,9 @@ jobs:
gh release upload "app-v${VERSION}" latest.json --clobber gh release upload "app-v${VERSION}" latest.json --clobber
build-linux: build-linux:
# TEMPORARILY DISABLED during macOS updater testing — faster turnaround.
# Re-enable by removing `if: false` before the next public release.
if: false
needs: create-release needs: create-release
permissions: permissions:
contents: write contents: write
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "psysonic", "name": "psysonic",
"version": "1.34.17", "version": "1.34.18",
"private": true, "private": true,
"scripts": { "scripts": {
"dev": "vite", "dev": "vite",
+1 -1
View File
@@ -3653,7 +3653,7 @@ dependencies = [
[[package]] [[package]]
name = "psysonic" name = "psysonic"
version = "1.34.17" version = "1.34.18"
dependencies = [ dependencies = [
"biquad", "biquad",
"discord-rich-presence", "discord-rich-presence",
+1 -1
View File
@@ -1,6 +1,6 @@
[package] [package]
name = "psysonic" name = "psysonic"
version = "1.34.17" version = "1.34.18"
description = "Psysonic Desktop Music Player" description = "Psysonic Desktop Music Player"
authors = [] authors = []
license = "" license = ""
+1 -1
View File
@@ -1,7 +1,7 @@
{ {
"$schema": "https://schema.tauri.app/config/2", "$schema": "https://schema.tauri.app/config/2",
"productName": "Psysonic", "productName": "Psysonic",
"version": "1.34.17", "version": "1.34.18",
"identifier": "dev.psysonic.player", "identifier": "dev.psysonic.player",
"build": { "build": {
"beforeDevCommand": "npm run dev", "beforeDevCommand": "npm run dev",