Skip to content

ci: split CI into reusable workflows + add Java job#304

Merged
pratyush618 merged 2 commits into
masterfrom
ci/java-ci-split
Jun 26, 2026
Merged

ci: split CI into reusable workflows + add Java job#304
pratyush618 merged 2 commits into
masterfrom
ci/java-ci-split

Conversation

@pratyush618

@pratyush618 pratyush618 commented Jun 26, 2026

Copy link
Copy Markdown
Collaborator

What's here

  • ci.yml → thin orchestrator: a changes path-filter job + four caller jobs (rust / python / node / java) that uses: reusable workflows, plus the ci-status aggregate gate. The four suites still run in parallel after changes.
  • New reusable workflows: 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), and ci-java.yml (new — ./gradlew build --no-daemon: compile + Spotless + Checkstyle + tests, native bundled).
  • New setup-java composite (Temurin 21 + Gradle cache). The path filters are DRY'd with a YAML anchor; the jni binding-free guard moves into ci-rust.yml.

Why now

This PR depends on #303's --release 11 build 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 single always() 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-filter expects. ci-java.yml's ./gradlew build is the same command verified locally on #303/#304.

Note: per-suite check names become nested (Rust / …, Java / Java SDK Tests). If branch protection pins specific job names, update them to the new names or rely on the aggregate CI status check.

Summary by CodeRabbit

  • New Features

    • Added Java CI coverage, including setup for Java builds and tests.
    • Expanded CI to run reusable checks for Rust, Node, Python, and Java projects.
  • Bug Fixes

    • Improved test selection so the right CI suites run based on changed files.
    • Added broader validation across database-backed Rust tests and Python/Node tooling.

@coderabbitai

coderabbitai Bot commented Jun 26, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 9c411221-c970-4575-aae8-118d4af24820

📥 Commits

Reviewing files that changed from the base of the PR and between 9efaa97 and bd0dd21.

📒 Files selected for processing (6)
  • .github/actions/setup-java/action.yml
  • .github/workflows/ci-java.yml
  • .github/workflows/ci-node.yml
  • .github/workflows/ci-python.yml
  • .github/workflows/ci-rust.yml
  • .github/workflows/ci.yml

📝 Walkthrough

Walkthrough

This PR adds reusable CI workflows for Java, Node, Python, and Rust, plus a composite Java setup action. ci.yml now detects Java changes, emits a Java suite flag, and routes each language suite through reusable workflow calls.

Changes

Reusable CI workflows

Layer / File(s) Summary
Java setup and workflow
.\github/actions/setup-java/action.yml, .\github/workflows/ci-java.yml
Set up Java adds a composite Temurin JDK action with Gradle caching, and ci-java.yml checks out the repo, sets up Rust and Java, and runs the Gradle build in sdks/java.
Node workflow
.\github/workflows/ci-node.yml
ci-node.yml adds a reusable Node CI workflow that sets up Rust and Node/pnpm, installs dashboard dependencies, builds the addon and dashboard, and runs typecheck, lint, and tests.
Python workflow
.\github/workflows/ci-python.yml
ci-python.yml adds reusable lint and cross-platform test jobs with Ruff, mypy, maturin, and pytest.
Rust workflow
.\github/workflows/ci-rust.yml
ci-rust.yml adds reusable lint plus SQLite, PostgreSQL, and Redis jobs with cargo fmt/clippy, dependency scans, and feature-specific tests.
CI orchestration
.\github/workflows/ci.yml
ci.yml adds a Java suite filter/output, extends the suite decision logic, and replaces inlined jobs with reusable workflow calls and updated status aggregation.

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
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

  • ByteVeda/taskito#272: Also reworks GitHub CI workflow wiring and reusable setup patterns in .github/workflows/ci.yml.

Suggested labels

rust

Poem

🐰 I hopped through CI under moonlit beams,
Java, Rust, and Python now run in teams.
Node brought carrots, bright and neat,
Reusable workflows made the build complete.
Thump-thump—green checks taste extra sweet.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main change: refactoring CI into reusable workflows and adding a Java job.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch ci/java-ci-split

Comment @coderabbitai help to get the list of available commands.

@github-actions github-actions Bot added the ci label Jun 26, 2026
@pratyush618

Copy link
Copy Markdown
Collaborator Author

@coderabbitai full review

@coderabbitai

coderabbitai Bot commented Jun 26, 2026

Copy link
Copy Markdown
✅ Action performed

Full review finished.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant