ci: restructure workflows to use unified builder image on self-hosted runners#110
Merged
Merged
Conversation
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the You can disable this status message by setting the ✨ 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 |
828f90e to
62303d8
Compare
62303d8 to
889c8d8
Compare
… runners Key changes: - Add comprehensive CI architecture documentation explaining: - Terminology (presto, prestocpp, prestissimo) - Unified builder image strategy for ephemeral runners - Job dependency graph - Comparison with upstream (prestodb/presto) CI - Performance benefits of pre-warmed ccache and Maven deps - Consolidate presto-java8/java17 jobs into single matrix-based `presto` job - ARTIFACT_JAVA_VERSION controls which version uploads artifacts/images (default: '8') - Add prestissimo image building to prestocpp workflow - Downloads artifacts from build job, packages into runtime image - Uses same tagging strategy as presto image (immutable + SNAPSHOT tags) - Centralize IMAGE_VERSION_TYPE configuration (set to 'BETA') - Applied to both presto and prestissimo images - Document artifacts (presto-server, presto-cli, presto-native-build) and Docker images (unified-builder, presto, prestissimo)
Disable the CLP integration test due to a timestamp filtering issue in the CLP native reader where the query returns empty results when filtering by timestamp. A separate PR will be raised to fix this unit test.
889c8d8 to
8c8abef
Compare
20001020ycx
approved these changes
Nov 28, 2025
Restructure header comments to explain key design decisions: - Caching strategy: why bake caches into Docker image layers - Image tagging: dual tags (immutable + SNAPSHOT) and version streams - Builder image tag: auto-computed dependency hash Also update comparison table with split image tag rows (builder vs runtime).
387b268
into
release-0.293-clp-connector-snapshot
2 checks passed
jackluo923
added a commit
that referenced
this pull request
Nov 29, 2025
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
Restructure CI workflows to use a unified builder image on self-hosted runners, replacing branch-specific CI.
Problems with Current CI
The existing CI in
release-0.293-clp-connector-snapshothas several limitations:release-0.293-clp-connector-snapshot*branchesRelated Work
This PR builds on ideas from two previous efforts:
y-scope/velox#45 — Migrated Velox CI to ephemeral containerized builds:
y-scope/presto#81 — Release workflow automation for Presto:
pom.xmlThis PR combines these approaches: continuous image publishing on every push (not just releases) with version-TYPE-timestamp-hash tagging, plus the caching and ephemeral build strategies from the Velox work.
Solution Overview
version-TYPE-timestamp-hash+ mutableSNAPSHOT; multiple streams (RELEASE, BETA, DEV)Key Design Decisions
Caching Strategy: Bake into Docker Image
The bandwidth problem: With Apache Infra's stash service, every CI run downloads the full ccache (~2GB+) and Maven cache. When running many parallel jobs, this saturates network bandwidth and slows everything down.
The solution: Bake caches into Docker image layers:
Image Tagging Strategy: Dual Tags + Version Streams
Runtime images serve multiple purposes that require different tagging strategies:
0.293-BETA-20250522140509-484b00e0.293-BETA-SNAPSHOTRELEASE(stable),BETA(testing),DEV(experimental)Comparison with Other Approaches
Three CI Approaches
release-0.293-clp-connector-snapshot*Unified Builder vs Upstream
Implementation Details
Workflow Structure
ci.yml: Main orchestrator calling reusable workflowscompute-builder-tag.yml: Computes image tag from dependency file hashescreate-builder-image.yml: Builds/pushes image if tag doesn't existpresto-build.yml: Java build with artifact upload and Docker image pushprestocpp-linux-build-and-unit-test.yml: C++ build, tests, and prestissimo imageintegration-tests.yml: E2E tests using pre-built artifactstests.yml: Java unit testsJob Dependency Graph
Builder Image Contents
The
unified-builderimage includes:Results
Outputs
Artifacts (1-day retention):
Docker Images (ghcr.io):
Note: Images are only pushed on
pushevents (not PRs) for security.Other Changes
TestPrestoNativeClpGeneralQueries.testdue to a timestamp filtering issue in the CLP native reader. A separate PR will fix this.Test Plan
Contributor checklist