Add Gradle docker tasks for streamlined local development #438
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
Adds new Gradle tasks to simplify the Docker-based local development workflow, replacing the manual multi-step process with a single command.
the OpenHouse build currently depends on shadowJars, which significantly slows builds (in CI and ELR so this time compounds) This dependency existed to simplify the local testing UX.As a first step toward removing shadowJars(which cuts the build time in half from ~5 minutes to ~2 minutes) I've added a one-line command to start the OpenHouse local server, effectively replacing the old shadowJars-based workflow.
Before (Manual Process)
After (Single Command)
New Gradle Tasks
dockerPrereqsdockerBuilddockerUpdockerDownUsage
Implementation Details
Explicit JAR Dependencies: The
dockerPrereqstask declares all JAR dependencies explicitly, enabling proper Gradle parallelism:tables,housetables,jobsspark-3.1,spark-3.5dummytokensRecipe Selection: Use
-Precipe=<name>to select docker-compose recipe:oh-only- Lightweight, local filesystem (fastest startup)oh-hadoop- With HDFSoh-hadoop-spark- Full stack with Spark (default)Design Decisions:
dockergroup, NOT integrated into./gradlew buildDocumentation Updates
Test Plan
build/directory)./gradlew build(independent)dockerDownproperly stops and removes containers