fix(updater): publish one merged S3 auto-update manifest per OS#254
Open
sproctor wants to merge 1 commit into
Open
fix(updater): publish one merged S3 auto-update manifest per OS#254sproctor wants to merge 1 commit into
sproctor wants to merge 1 commit into
Conversation
Nucleus runs a separate electron-builder invocation per TargetFormat, and each updatable run publishes its own single-artifact `<channel><osSuffix>.yml`. Because the manifest name is keyed only on the OS, every format of the same OS publishes to the same S3 key, so the last writer clobbers the others — e.g. the deb run overwrites the AppImage entry, and an AppImage client then hits NoMatchingFileException (on macOS a dmg-only `latest-mac.yml` breaks Squirrel.Mac updates entirely). Fix: always set `publishAutoUpdate: false` for S3 so electron-builder uploads the artifacts but not the manifests, then a new merge task discovers the per-format manifests for the current OS, unions their `files:` entries (UpdateYmlMerger), and uploads a single manifest via `aws s3 cp`. A lone manifest passes through verbatim to preserve electron-builder's exact metadata. - TargetFormat.producesUpdateManifest gates registering the merge task. - Upload mirrors electron-builder's publish decision (publish mode + CI tag), fails loudly if a manifest is expected but missing or the aws CLI is absent. - Tested: merge/discovery, publish-flag/tag logic, s3 key, and the publishAutoUpdate:false config emission. Scope: S3 only. GitHub releases are already consolidated in CI (generate-update-yml). Cross-arch merging remains a CI concern. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🚀 Description
Claude generated description of changes:
Nucleus runs a separate electron-builder invocation per TargetFormat, and each updatable run publishes its own single-artifact
<channel><osSuffix>.yml. Because the manifest name is keyed only on the OS, every format of the same OS publishes to the same S3 key, so the last writer clobbers the others — e.g. the deb run overwrites the AppImage entry, and an AppImage client then hits NoMatchingFileException (on macOS a dmg-onlylatest-mac.ymlbreaks Squirrel.Mac updates entirely).Fix: always set
publishAutoUpdate: falsefor S3 so electron-builder uploads the artifacts but not the manifests, then a new merge task discovers the per-format manifests for the current OS, unions theirfiles:entries (UpdateYmlMerger), and uploads a single manifest viaaws s3 cp. A lone manifest passes through verbatim to preserve electron-builder's exact metadata.Scope: S3 only. GitHub releases are already consolidated in CI (generate-update-yml).
📄 Motivation and Context
Fixes #253
🧪 How Has This Been Tested?
Added tests.
📦 Types of changes
✅ Checklist