fix(release): produce updater artifacts, and point the manifest at them
🏗️ Build and Test JellyTau / Run Tests (push) Successful in 15m32s
🏗️ Build and Test JellyTau / Supply Chain (push) Failing after 29s
Publish Documentation / Build & publish docs to gitea-pages (push) Successful in 5m34s
Traceability Validation / Check Requirement Traces (push) Successful in 11s
Build & Release / Run Tests (push) Successful in 14m49s
🏗️ Build and Test JellyTau / Android Compile Check (push) Successful in 4m22s
Build & Release / Build Linux (push) Failing after 17m42s
Build & Release / Build Windows (push) Successful in 15m46s
Build & Release / Build Android (push) Successful in 30m54s
Build & Release / Create Release (push) Skipped
🏗️ Build and Test JellyTau / Run Tests (push) Successful in 15m32s
🏗️ Build and Test JellyTau / Supply Chain (push) Failing after 29s
Publish Documentation / Build & publish docs to gitea-pages (push) Successful in 5m34s
Traceability Validation / Check Requirement Traces (push) Successful in 11s
Build & Release / Run Tests (push) Successful in 14m49s
🏗️ Build and Test JellyTau / Android Compile Check (push) Successful in 4m22s
Build & Release / Build Linux (push) Failing after 17m42s
Build & Release / Build Windows (push) Successful in 15m46s
Build & Release / Build Android (push) Successful in 30m54s
Build & Release / Create Release (push) Skipped
Two defects on the release path, both of which would have failed the v0.10.0 build after all three platforms had already compiled -- caught by running a real signed build locally instead of waiting for the tag. **createUpdaterArtifacts was never set.** Without it Tauri emits only the plain .AppImage and .exe: no signatures at all. The manifest step then finds none and aborts by design, so the release dies at Create Release having spent ~40 minutes building artifacts it cannot publish. **The manifest looked for the wrong filename.** Tauri v2 signs the .AppImage *itself* and writes <name>.AppImage.sig beside it. The .AppImage.tar.gz form this workflow globbed for only exists under createUpdaterArtifacts: "v1Compatible". A real signed build produced: 154M JellyTau_0.10.0_amd64.AppImage 420 JellyTau_0.10.0_amd64.AppImage.sig so the glob would have matched nothing and the step would have aborted for a second, entirely different reason. Both the artifact collection and the manifest now use the v2 names, and the AppImage and its .sig ship together -- a manifest referencing a signature that was never uploaded fails only on the user's machine. Verified before tagging rather than after: the manifest logic was run against the real artifacts (420-char minisign signature read correctly) and the resulting latest.json checked for validity and shape. The Windows side already used the correct pattern (<installer>.exe.sig), which is why only Linux needed the change.
This commit is contained in:
@@ -190,12 +190,15 @@ jobs:
|
|||||||
# Without nullglob an unmatched pattern stays literal, so test each
|
# Without nullglob an unmatched pattern stays literal, so test each
|
||||||
# candidate instead. Same POSIX-only rule as traceability-check.yml.
|
# candidate instead. Same POSIX-only rule as traceability-check.yml.
|
||||||
#
|
#
|
||||||
# The .AppImage.tar.gz + .sig pair is what the updater downloads and
|
# Tauri v2 signs the .AppImage ITSELF and writes <name>.AppImage.sig
|
||||||
# verifies; the plain .AppImage is what a human downloads. Both ship.
|
# beside it -- there is no .AppImage.tar.gz unless
|
||||||
|
# bundle.createUpdaterArtifacts is set to "v1Compatible". The updater
|
||||||
|
# downloads the same AppImage a human does and verifies that .sig, so
|
||||||
|
# both files must ship or the manifest points at a signature nobody
|
||||||
|
# can fetch.
|
||||||
for bundle in \
|
for bundle in \
|
||||||
src-tauri/target/release/bundle/appimage/*.AppImage \
|
src-tauri/target/release/bundle/appimage/*.AppImage \
|
||||||
src-tauri/target/release/bundle/appimage/*.AppImage.tar.gz \
|
src-tauri/target/release/bundle/appimage/*.AppImage.sig \
|
||||||
src-tauri/target/release/bundle/appimage/*.AppImage.tar.gz.sig \
|
|
||||||
src-tauri/target/release/bundle/deb/*.deb \
|
src-tauri/target/release/bundle/deb/*.deb \
|
||||||
src-tauri/target/release/bundle/rpm/*.rpm; do
|
src-tauri/target/release/bundle/rpm/*.rpm; do
|
||||||
[ -e "$bundle" ] || continue
|
[ -e "$bundle" ] || continue
|
||||||
@@ -499,8 +502,13 @@ jobs:
|
|||||||
APPIMAGE_URL=""
|
APPIMAGE_URL=""
|
||||||
NSIS_URL=""
|
NSIS_URL=""
|
||||||
|
|
||||||
for f in artifacts/linux/*.AppImage.tar.gz; do
|
# Tauri v2 signs the AppImage itself; <name>.AppImage.sig sits beside
|
||||||
|
# it. Verified against a real signed build before tagging -- the
|
||||||
|
# v1-style .AppImage.tar.gz is never produced with
|
||||||
|
# createUpdaterArtifacts: true.
|
||||||
|
for f in artifacts/linux/*.AppImage; do
|
||||||
[ -e "$f" ] || continue
|
[ -e "$f" ] || continue
|
||||||
|
case "$f" in *.sig) continue;; esac
|
||||||
APPIMAGE_URL="${BASE}/$(basename "$f")"
|
APPIMAGE_URL="${BASE}/$(basename "$f")"
|
||||||
[ -e "$f.sig" ] && APPIMAGE_SIG="$(cat "$f.sig")"
|
[ -e "$f.sig" ] && APPIMAGE_SIG="$(cat "$f.sig")"
|
||||||
done
|
done
|
||||||
|
|||||||
@@ -44,6 +44,7 @@
|
|||||||
},
|
},
|
||||||
"bundle": {
|
"bundle": {
|
||||||
"active": true,
|
"active": true,
|
||||||
|
"createUpdaterArtifacts": true,
|
||||||
"targets": [
|
"targets": [
|
||||||
"deb",
|
"deb",
|
||||||
"rpm",
|
"rpm",
|
||||||
|
|||||||
Reference in New Issue
Block a user