diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index c48a2a8..b651fb4 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -53,7 +53,6 @@ jobs: AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }} AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }} AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }} - SYMBOL_API_KEY: ${{ secrets.SYMBOL_API_KEY }} - name: Upload Artifact uses: actions/upload-artifact@v4 @@ -80,3 +79,4 @@ jobs: env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} APIKEY: ${{ secrets.APIKEY }} + SYMBOL_API_KEY: ${{ secrets.SYMBOL_API_KEY }} diff --git a/Changelist.txt b/Changelist.txt index b3babb2..d3f543d 100644 --- a/Changelist.txt +++ b/Changelist.txt @@ -1,3 +1,6 @@ +1.0.34: +- Crash reporting improvements + 1.0.33: - Added crash reporting diff --git a/Installer/build.sh b/Installer/build.sh index e559fe2..3aa595b 100755 --- a/Installer/build.sh +++ b/Installer/build.sh @@ -23,8 +23,8 @@ VERSION=$(cat "$PROJECT_ROOT/VERSION") # # Crash reporting: bundle the latest CrashReporter app + this plugin's -# registration JSON, and upload debug symbols so crashes can be symbolicated. -# SYMBOL_API_KEY - CI secret, authorises symbol upload for this plugin. +# registration JSON. Debug symbols are zipped into bin/ and uploaded later by +# the release job (release.sh), never from this build. # The CrashReporter download is a public distribution channel (no key needed). # CRASH_BASE="https://crashreports.rabiensoftware.com" @@ -45,18 +45,6 @@ fetch_reporter () { # $1 platform, $2 output file return 1 } -# Upload a symbols archive for this plugin/version. Skipped if the key is unset. -upload_symbols () { # $1 platform, $2 zip file - if [ -z "${SYMBOL_API_KEY:-}" ]; then echo "SYMBOL_API_KEY not set — skipping symbol upload"; return 0; fi - if [ ! -f "$2" ]; then echo "No symbol archive $2 — skipping"; return 0; fi - echo "Uploading $1 symbols for $VERSION" - # Non-fatal: a symbol-upload failure must never break a release build. - curl -fsS -H "X-API-Key: $SYMBOL_API_KEY" \ - -F "platform=$1" -F "version=$VERSION" -F "files[]=@$(curl_path "$2")" \ - "$CRASH_BASE/symbols/" || echo "WARNING: symbol upload failed" - echo -} - # # Reset staging # @@ -268,8 +256,6 @@ if [ "$PLATFORM" = "macOS" ]; then VST3/$PLUGIN.vst3.dSYM \ CLAP/$PLUGIN.clap.dSYM 2>/dev/null || true - upload_symbols mac "$PROJECT_ROOT/bin/Symbols_Mac.zip" - ############################################################ # Linux — cpack DEB (VST + VST3 + LV2 + CLAP + Resources) ############################################################ @@ -378,6 +364,4 @@ else cp "$ART_DIR/VST3/$PLUGIN.pdb" "$SYM_DIR/VST3/" 2>/dev/null || true cp "$ART_DIR/CLAP/$PLUGIN.pdb" "$SYM_DIR/CLAP/" 2>/dev/null || true ( cd "$SYM_DIR" && 7z a "$PROJECT_ROOT/bin/Symbols_Win.zip" VST VST3 CLAP ) - - upload_symbols win "$PROJECT_ROOT/bin/Symbols_Win.zip" fi diff --git a/VERSION b/VERSION index c1cf2f9..ffcbe71 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.0.33 \ No newline at end of file +1.0.34 diff --git a/release.sh b/release.sh index f39f24a..d86c90c 100755 --- a/release.sh +++ b/release.sh @@ -26,6 +26,23 @@ fi echo "$NOTES" > /tmp/release_notes.txt +# --- Debug symbols -> crash server ------------------------------------------- +# Uploaded here (not the build job) so a failed upload fails the release. The +# server stores symbols write-once per (plugin, platform, version): a re-tagged +# or rebuilt version whose symbols already exist returns 409 and fails the +# release loudly — delete the stale symbols in the crash site, then re-run. +CRASH_BASE="https://crashreports.rabiensoftware.com" +upload_symbols () { # $1 platform, $2 zip + if [ ! -f "$2" ]; then echo "Error: expected symbols $2 not found"; exit 1; fi + echo "Uploading $1 symbols for $VER" + curl -sS --fail-with-body -H "X-API-Key: $SYMBOL_API_KEY" \ + -F "platform=$1" -F "version=$VER" -F "files[]=@$2" \ + "$CRASH_BASE/symbols/" + echo +} +upload_symbols mac "./Binaries macOS/Symbols_Mac.zip" +upload_symbols win "./Binaries Windows/Symbols_Win.zip" + ASSETS=( "./Binaries Linux"/*.deb "./Binaries Windows"/*.exe