ci: split CI into reusable workflows + add Java job#304
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (6)
📝 WalkthroughWalkthroughThis PR adds reusable CI workflows for Java, Node, Python, and Rust, plus a composite Java setup action. ChangesReusable CI workflows
Sequence Diagram(s)sequenceDiagram
participant ciYml as ci.yml
participant changesJob as changes job
participant decideStep as decide step
participant ciRust as ci-rust.yml
participant ciPython as ci-python.yml
participant ciNode as ci-node.yml
participant ciJava as ci-java.yml
participant ciStatus as ci-status
ciYml->>changesJob: path filter rust/python/node/java
changesJob->>decideStep: suite outputs
decideStep->>ciYml: emit rust/python/node/java flags
ciYml->>ciRust: workflow_call when rust=true
ciYml->>ciPython: workflow_call when python=true
ciYml->>ciNode: workflow_call when node=true
ciYml->>ciJava: workflow_call when java=true
ciYml->>ciStatus: aggregate suite job results
Estimated code review effort🎯 4 (Complex) | ⏱️ ~60 minutes Possibly related PRs
Suggested labels
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
|
@coderabbitai full review |
✅ Action performedFull review finished. |
What's here
ci.yml→ thin orchestrator: achangespath-filter job + four caller jobs (rust/python/node/java) thatuses:reusable workflows, plus theci-statusaggregate gate. The four suites still run in parallel afterchanges.ci-rust.yml(rust lint + binding-free guard + SQLite/Postgres/Redis matrices),ci-python.yml(Ruff/mypy + the cross-platform pytest matrix),ci-node.yml(napi + TS + dashboard), andci-java.yml(new —./gradlew build --no-daemon: compile + Spotless + Checkstyle + tests, native bundled).setup-javacomposite (Temurin 21 + Gradle cache). The path filters are DRY'd with a YAML anchor; thejnibinding-free guard moves intoci-rust.yml.Why now
This PR depends on #303's
--release 11build fix — the Java CI job builds on the runner's JDK 21 only because the SDK targets 11 bytecode via--release, not a pinned toolchain. The split itself follows the GitHub-recommended pattern: reusable workflows for whole suites, a singlealways()aggregate gate (CI status) as the required check (skipped conditional jobs report success, so per-suite jobs are not individually required).Verification
actionlint clean on all five workflows; the path-filter anchor flattens as
dorny/paths-filterexpects.ci-java.yml's./gradlew buildis the same command verified locally on #303/#304.Summary by CodeRabbit
New Features
Bug Fixes