mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-11-08 19:13:25 -08:00
[CrashReporting] Archive PDBs on tag builds so a failed upload is recoverable
The "[Windows] Upload PDBs" artifact step skipped tag builds (github.ref_type != 'tag'), so for a release the symbols existed only inside the Sentry upload — which is continue-on-error. A failed upload therefore lost the ability to symbolicate that release permanently: no rebuild produces the same PDB, since the debug id is a per-build GUID+age. That is how every Windows crash reported so far became unreadable. Archive the PDBs for tag builds as well, and order the step after "Upload to release" so a missing PDB can never block a release from being published. Retention stays at the repository default; nothing consumes the artifact automatically, it is the manual recovery path (gh run download <run> -n <name>-PDBs, then sentry-cli debug-files upload). Verified by re-parsing the workflow and asserting the step order (release -> PDBs -> attest) and the broadened condition.
This commit is contained in:
parent
d7bc35d9d8
commit
fef0edbd0b
1 changed files with 19 additions and 13 deletions
32
.github/workflows/desktop-build.yml
vendored
32
.github/workflows/desktop-build.yml
vendored
|
|
@ -827,19 +827,6 @@ jobs:
|
||||||
if-no-files-found: error
|
if-no-files-found: error
|
||||||
path: ${{ steps.build.outputs.path }}
|
path: ${{ steps.build.outputs.path }}
|
||||||
|
|
||||||
# Ninja is single-config: binaries and their PDBs land directly in the
|
|
||||||
# target directories instead of a Release subdirectory.
|
|
||||||
- name: "[Windows] Upload PDBs (Program Databases)"
|
|
||||||
if: matrix.os == 'Windows' && github.ref_type != 'tag'
|
|
||||||
uses: actions/upload-artifact@v7
|
|
||||||
with:
|
|
||||||
if-no-files-found: error
|
|
||||||
name: ${{ steps.build.outputs.name }}-PDBs
|
|
||||||
path: |
|
|
||||||
build/cockatrice/*.pdb
|
|
||||||
build/oracle/*.pdb
|
|
||||||
build/servatrice/*.pdb
|
|
||||||
|
|
||||||
- name: "Upload to release"
|
- name: "Upload to release"
|
||||||
if: needs.configure.outputs.tag != null && matrix.make_package == '1'
|
if: needs.configure.outputs.tag != null && matrix.make_package == '1'
|
||||||
id: upload_release
|
id: upload_release
|
||||||
|
|
@ -851,6 +838,25 @@ jobs:
|
||||||
tag_name: ${{ needs.configure.outputs.tag }}
|
tag_name: ${{ needs.configure.outputs.tag }}
|
||||||
run: gh release upload "$tag_name" "$asset_path#$asset_name"
|
run: gh release upload "$tag_name" "$asset_path#$asset_name"
|
||||||
|
|
||||||
|
# Ninja is single-config: binaries and their PDBs land directly in the
|
||||||
|
# target directories instead of a Release subdirectory.
|
||||||
|
#
|
||||||
|
# Archived for tag builds as well, and ordered after the release upload so
|
||||||
|
# a missing PDB can never block a release from being published. On a tag
|
||||||
|
# build this artifact is the only durable copy of the symbols: the Sentry
|
||||||
|
# upload is continue-on-error, so without it a failed upload would lose
|
||||||
|
# the ability to symbolicate that release permanently.
|
||||||
|
- name: "[Windows] Upload PDBs (Program Databases)"
|
||||||
|
if: matrix.os == 'Windows'
|
||||||
|
uses: actions/upload-artifact@v7
|
||||||
|
with:
|
||||||
|
if-no-files-found: error
|
||||||
|
name: ${{ steps.build.outputs.name }}-PDBs
|
||||||
|
path: |
|
||||||
|
build/cockatrice/*.pdb
|
||||||
|
build/oracle/*.pdb
|
||||||
|
build/servatrice/*.pdb
|
||||||
|
|
||||||
- name: "Attest binary provenance"
|
- name: "Attest binary provenance"
|
||||||
if: steps.upload_release.outcome == 'success'
|
if: steps.upload_release.outcome == 'success'
|
||||||
id: attestation
|
id: attestation
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue