feat: add modular distribution builder by robfrank · Pull Request #3194 · ArcadeData/arcadedb (original) (raw)
and others added 24 commits
Add design document for a new modular distribution builder that allows users to create custom ArcadeDB packages with only the modules they need.
Key features:
- Base distribution approach (engine, server, network + deps)
- Optional modules downloaded from Maven Central
- Generates zip, tar.gz, and Docker images
- Interactive and CLI modes
- Checksum verification for security
Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
Create base.xml assembly that includes only core modules (engine, server, network) with all their dependencies, excluding optional modules:
- console
- gremlin
- redisw
- mongodbw
- graphql
- studio
- postgresw
- grpcw
- metrics
This base distribution will be published to GitHub releases and used as the foundation for the modular distribution builder.
Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
Add base distribution assembly to package module build configuration. This creates arcadedb-{version}-base.tar.gz and .zip distributions containing only core modules (engine, network, server) without optional wire protocol modules.
Part of modular distribution builder implementation.
Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
Add checksum-maven-plugin to generate SHA-256 checksums for all distribution archives. These checksums will be used by the modular builder to verify downloads.
Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
Add basic script structure with constants, module metadata, and configuration variables for the modular distribution builder.
Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
Add comprehensive help message and CLI argument parsing with support for all planned options.
Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
Add structured logging functions (info, verbose, error, success) and error handling with cleanup on exit or interrupt.
Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
Check for required tools (curl/wget, tar, unzip, checksums, docker), disk space, and write permissions before proceeding.
Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
Validate version format and set default values for output name and Docker tag based on version and timestamp.
Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
Add interactive mode that prompts for version and displays numbered module list for selection. Falls back to interactive if version or modules not specified on command line.
Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
Add helper functions to download files using curl/wget and verify SHA-256 and SHA-1 checksums. Includes dry-run support.
Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
Download base distribution from GitHub releases, verify checksum, and extract to temporary directory.
Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
Download selected optional modules (shaded or regular JARs) from Maven Central, verify SHA-1 checksums, and add to lib directory.
Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
Create zip and tar.gz archives from the assembled distribution directory with user-specified or timestamp-based naming.
Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
Generate Dockerfile and optionally build Docker image with custom tag. Supports --skip-docker and --dockerfile-only flags.
Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
Prevent users from specifying both --skip-docker and --dockerfile-only flags together, which creates ambiguous intent.
Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
Display comprehensive summary of build configuration and generated artifacts at completion.
Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
Add detailed documentation covering usage, examples, options, troubleshooting, and how the builder works.
Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
Add helper script to prepare builder artifacts for GitHub releases, including builder script and README.
Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
Add script to test builder functionality locally without requiring GitHub releases or Maven Central.
Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
Document the modular distribution builder commands and usage in the project documentation.
Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
Add comprehensive guide for both end users and developers covering usage, examples, architecture, and customization.
Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
Add comprehensive feature request document summarizing the modular builder implementation, use cases, benefits, and technical details.
Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
robfrank linked an issue
that may beclosed by this pull request
[](/apps/gemini-code-assist)
Update help text to show correct --option=value format and clarify that --version is required only for non-interactive mode.
Addresses PR #3194 review comment.
Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
- Dynamically retrieve version using mvn help:evaluate
- Replace hardcoded version strings with PROJECT_VERSION variable
- Improves maintainability and prevents version drift
Addresses PR review comment #2
- Use artifact_id instead of module in jar_url
- Remove unused maven_path variable
- Matches actual implementation in arcadedb-builder.sh
Addresses PR review comment #3
robfrank changed the title
docs: add modular distribution builder design feat: add modular distribution builder
- Add --local-repo flag for offline testing
- Support Maven repository and custom directory structures
- Include checksum verification for local files
- Update all documentation and testing scripts
- 9 tasks with step-by-step implementation guide
- Add LOCAL_REPO global variable
- Support both --local-repo and --local-repo=PATH syntax
- Default to ~/.m2/repository when no path provided
- Update help text with examples
- Verify local repo directory exists before proceeding
- Detect Maven repository vs custom directory structure
- Provide helpful warning for custom directories
- Support Maven repository structure (com/arcadedb/{artifact}/{version}/)
- Support custom flat directory structure
- Return absolute path or empty string if not found
Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
- Add copy_local_module to copy from local repository
- Extract download_remote_module from download_optional_modules
- Support optional checksum verification for local files
- Maintain same error handling and logging patterns
- Add Test 3 to test-builder-local.sh for local mode
- Add Local Development Mode section to README-BUILDER.md
- Add Development Workflow section to modular-builder-guide.md
- Add Distribution Builder section to CLAUDE.md
- Update command-line options and architecture descriptions
Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
- Add || true to find_local_jar call in copy_local_module
- Prevents set -eo pipefail from exiting before error message displays
- Error message now properly shown when module missing from local repo
Enables fully offline testing by allowing users to specify a local base distribution file instead of downloading from GitHub.
Usage: --local-base=target/arcadedb-26.1.1-SNAPSHOT-base.tar.gz
When combined with --local-repo, allows complete offline operation without any internet downloads.
Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
The base tarball extracts to arcadedb-{version}/ not arcadedb-{version}-base/. Fixed all three occurrences where the script expected the -base suffix in the directory path.
This fixes the extraction error that prevented local builds from working correctly.
Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
- Added Test 3.5 to test-builder-local.sh for full offline mode
- Updated README-BUILDER.md with full offline mode section
- Updated modular-builder-guide.md development workflow
- All examples now show how to use --local-base for fully offline builds
Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
Add dedicated CI job to test the modular distribution builder script. The job runs all tests in test-builder-local.sh including dry-run scenarios, local repository mode, and validation tests.
Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
robfrank added a commit that referenced this pull request
(cherry picked from commit c8c7fb8)
mergify Bot added a commit that referenced this pull request
mergify Bot added a commit that referenced this pull request
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
[ Show hidden characters]({{ revealButtonHref }})