build(linux): add AppImage update information - #311
snowyukitty wants to merge 3 commits into
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Team Run ID: 📒 Files selected for processing (1)
Included review availability: Your plan provides up to 8 included reviews per hour; 7 remain after this review. 📝 WalkthroughWalkthroughChangesThe publish workflow configures Linux AppImage update metadata. It validates the zsync sidecar and embedded Linux AppImage update publishing
Suggested reviewers: Merge Risk: ⚪ Minimal · up to Linux AppImage releases now publish architecture-specific zsync sidecars with release-independent update metadata, allowing installed AppImages to locate later release sidecars. The workflow validates the metadata and artifact naming before upload, with no remaining merge-blocking risk. 🚥 Pre-merge checks | ✅ 1✅ Passed checks (1 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Hi @snowyukitty, can you please sign the CLA |
There was a problem hiding this comment.
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
.github/workflows/publish.yml (1)
293-309: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick winUse a release-independent zsync filename pattern.
Because the
gh-releases-zsyncfield matches release asset names, the version-specificDashBeam_${VERSION}_${APPIMAGE_RELEASE_ARCH}.AppImage.zsyncvalue can prevent older AppImages from finding the sidecar in a newerlatestrelease. UseDashBeam_*_${APPIMAGE_RELEASE_ARCH}.AppImage.zsync. Update the validation step sobasename "$SIDECAR"uses pattern matching instead of exact equality.Source: MCP tools
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Team
Run ID: 2c7d96ba-b2ac-4989-a832-4f43f6b197b0
📒 Files selected for processing (1)
.github/workflows/publish.yml
Included review availability: Your plan provides up to 8 included reviews per hour; 7 remain after this review.
|
CLA signed. I also brought the branch up to current |
The update information named this build's own version, so an installed AppImage would resolve `latest` and then look for its own sidecar in a release that no longer has one: a 0.7.1 build asking for `DashBeam_0.7.1_amd64.AppImage.zsync` finds only `DashBeam_0.7.2_amd64.AppImage.zsync` there. That is the case the field exists for, so updates would never have been found. The filename field takes `*` as a wildcard, so the embedded pattern is now `DashBeam_*_<arch>.AppImage.zsync`. The validation keeps the exact check it had, against a separate `APPIMAGE_EXPECTED_SIDECAR` built from `$VERSION`, so a bundle named for the wrong version is still refused. A second check then asserts the uploaded asset is matched by the pattern the AppImage carries, which is the invariant the first one no longer covers.
|
The CodeRabbit finding on the Why it mattered. The embedded filename is matched against the assets of whichever release is The fix. The filename field takes The validation. I kept the exact check rather than loosening it to the pattern. Verification. What that does not cover: the |
Configure Linux AppImage release jobs to embed release-independent, architecture-specific zsync update information. Verify the single generated sidecar — its exact name for this version, that the pattern the AppImage carries still matches it, and its
.upd_infosection — before uploading it to the current draft release with rerunnable clobber behavior.Tests: this workflow is
on: push: tags: v*.*.*, so it was not executed. The arch-mapping and sidecar filename checks were copied into a local shell script with the GitHub-provided values,$GITHUB_ENVand the bundle directory stubbed, and exercised over eight cases: both arch mappings, a rejected unknown arch, a sidecar named for the version under build passing both checks, a sidecar from a later version still matched by the embedded pattern, a wrong-version bundle still refused by the exact check, the aarch64 pattern refusing an amd64 name, and a foreign filename refused. All eight behave as described, andpublish.ymlstill parses (yaml.safe_load), onpushtagsv*.*.*.Not covered by those checks: the
readelf --string-dump=.upd_inforeadback needs a real AppImage, so only a tagged release exercises it.Disclosure: This contribution was prepared with OpenAI Codex assistance.