Add pre-built bundle download support for faster app installation#438
Merged
Add pre-built bundle download support for faster app installation#438
Conversation
After the normal install completes, the installer now checks for pre-built bundles in jdeploy.artifacts (package.json). If available for the current platform, downloads the JAR, verifies SHA-256, extracts the native bundle, and replaces the generated one with the signed/ notarized version. - PrebuiltArtifactInfo: model for artifact URL, SHA-256, and CLI variant - PrebuiltBundleDownloader: download/verify/extract/replace service with progress UI, backup/restore on failure, zip-slip protection - NPMPackageVersion.getPrebuiltArtifact(): accessor for artifact config - Main.install(): integration after platform-specific install blocks https://claude.ai/code/session_01DSJ3y91ADTjSiUqvVJmDdX
…dle-download-SbnZm
Adds mock-network integration tests that verify the full pre-built bundle download flow using WireMock to serve real JAR files over HTTP. Test scenarios: - Download and replace installed binary (single file) - Download and replace installed .app bundle (directory structure) - SHA-256 mismatch keeps original bundle intact - HTTP 404/500 errors keep original bundle intact - HTTP 302 redirect following (GitHub release URL pattern) - No download when artifacts missing or wrong platform - Progress UI updated during download - Source package.json with only "enabled" flag (no url) is skipped Infrastructure: - WireMockAdminClient for installer module with binary content stubs - Updated Dockerfile to build+test installer module - Updated run-mock-network-tests.sh for local installer tests - Updated GitHub Actions workflow with installer test step https://claude.ai/code/session_01DSJ3y91ADTjSiUqvVJmDdX
…urefire Surefire's -Dtest glob pattern `*` doesn't match nested packages. Use the fully qualified class name instead. Also add -Dsurefire.failIfNoSpecifiedTests=false so that Assumptions-skipped tests don't cause a build failure. https://claude.ai/code/session_01DSJ3y91ADTjSiUqvVJmDdX
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.
Summary
This PR adds support for downloading and installing pre-built application bundles (signed binaries) from artifact repositories, enabling faster installation without requiring compilation or code generation.
Key Changes
Core Implementation
PrebuiltBundleDownloader: New service that downloads JAR artifacts containing pre-built bundles, verifies SHA-256 integrity, extracts contents, and replaces the installed application
PrebuiltArtifactInfo: Data class representing artifact metadata from package.json
Integration
jdeploy.artifactssectionTesting
Test Infrastructure
Notable Implementation Details
https://claude.ai/code/session_01DSJ3y91ADTjSiUqvVJmDdX