ci: add build workflow for Flink 1.18/1.19/1.20 across JDK 11/17 - #55
ci: add build workflow for Flink 1.18/1.19/1.20 across JDK 11/17#55LuciferYang wants to merge 4 commits into
Conversation
Add .github/workflows/build.yml running `mvn verify` (compile + unit
tests) on push to main and PRs targeting main. Matrix covers the three
Flink version modules (1.18/1.19/1.20) x JDK {11, 17}, fail-fast off.
Disable LanceReadOptimizationsTest.testInPredicatePushDown: IN predicate
push-down is asserted but not yet implemented in the source
(convertToLanceFilter returns null for BuiltInFunctionDefinitions.IN).
Integration tests (*ITCase) are intentionally out of scope here: they run
post-package against the shaded jar and currently fail on pre-existing
shade/relocation issues (arrow NoSuchMethod, namespace connect). Wiring
them into CI is tracked as a follow-up.
- Add timeout-minutes: 30 so a hung test is killed well before GitHub's default 6h cap (matters under fail-fast: false). - Rename the step to "Build and run unit tests" since verify runs only unit tests here (no failsafe, so *ITCase are not executed).
|
cc @fightBoxing FYI |
|
Thanks for kicking off CI @LuciferYang — long overdue and the workflow itself is clean (concurrency + cancel-in-progress, least-privilege permissions, timeout, 1.
|
- Add flink 1.19/1.20 x JDK 21 via matrix include (1.18 stays on 8/11/17 per Flink's supported-JDK matrix); 8 jobs total. - paths-ignore doc-only changes (**.md, docs/**) so they don't burn 8 jobs. - Upload surefire reports as an artifact on failure to make remote debugging easier. Addresses review feedback on PR lance-format#55.
|
Addressed the actionable items in two commits ( 1. The three per-Flink modules pull the root test tree in through The
On 2. Matrix
3. Signal and gates
|
-am (also-make) builds the modules the selected -pl module depends on in the same reactor. The three modules are independent today, so this is a no-op in practice, but it keeps a fresh -pl checkout from failing if a module later depends on a sibling/root artifact. Per review feedback on lance-format#55.
|
Added |
What
Adds a
BuildGitHub Actions workflow (.github/workflows/build.yml) that compiles and runs the unit tests across every supported Flink version and JDK. Until now the only workflow waspr-title.yml(semantic PR-title lint), so CI never built or tested the code.How
pushtomainandpull_requesttargetingmain.flink {1.18, 1.19, 1.20} x java {11, 17}, 6 jobs, withfail-fast: falseso one red cell doesn't hide the others.actions/setup-java@v4(temurin, maven cache) thenmvn -B -ntp -pl lance-flink-<ver> verify, and setstimeout-minutes: 30so a hung test is killed well before GitHub's 6h default.concurrencycancels superseded runs;permissionsiscontents: read.pr-title.yml.The one failing test
LanceReadOptimizationsTest.testInPredicatePushDownasserts that anINpredicate gets pushed down, but the source never implemented that.LanceDynamicTableSourcereturnsnullforBuiltInFunctionDefinitions.IN(the code comments// IN (not supported yet)), so the test failed on every run. It is now@Disabledwith the reason inline, which lets the suite go green. Turning it into a real test belongs in a separate PR (see follow-ups); this one only adds the pipeline.Integration tests are out of scope here
This PR runs compile plus unit tests.
mvn verifywith the current surefire setup matches*Test/*Testsonly, so the*ITCaseclasses never run. Wiring them in needs its own fix first:maven-failsafe-plugin, so*ITCaseclasses aren't executed by the build at all.packageagainst the shaded jar and throwNoSuchMethodErroronLanceTypeConverter.toArrowSchema(RowType)andLanceNamespace.connect(String, Map, BufferAllocator)(shaded-artifact classpath skew, not a test bug). The namespacecreateTablepath separately needs an Arrow IPC schema stream (InvalidInputException code=13).I left those out to keep this PR focused on the pipeline.
Follow-ups
*ITCasein throughmaven-failsafe-pluginafter fixing the shade relocation, so the ITs run against the packaged jar.@DisabledontestInPredicatePushDownwith an assertion of the current fallback (accepted 0, remaining 1), and fix the class Javadoc that still lists IN and BETWEEN as covered.Test plan
mvn -pl lance-flink-1.18 verify-> BUILD SUCCESS (178 run, 0 failures, 18 skipped)mvn -pl lance-flink-1.19 verify-> BUILD SUCCESSmvn -pl lance-flink-1.20 verify-> BUILD SUCCESS