Repository navigation
feat(ci): run backend and frontend unit tests in GitHub Actions - #17
Merged
Merged
Conversation
giggsoff
marked this pull request as draft
September 21, 2026 17:13
giggsoff
force-pushed
the
feat/ci-unit-tests
branch
from
September 22, 2026 10:57
83bc1f4 to
897ba16
Compare
The "arenadata" repository now points at Arenadata's public Maven repository instead of GitHub Packages, so builds need no GitHub credentials for it.
The frontend compiles with --release 21 (fe/pom.xml), but the entrypoint only looked for Java 8, 11 and 17 and refused to start otherwise.
Math.log and friends may differ from StrictMath by one ULP per call (see the java.lang.Math javadoc), so an expected value such as Math.log(3) / Math.log(10) lands 2 ULPs away from Hive's UDFLog result and the exact comparison failed.
giggsoff
force-pushed
the
feat/ci-unit-tests
branch
5 times, most recently
from
September 23, 2026 12:10
9d1f8f1 to
3f3ed27
Compare
giggsoff
marked this pull request as ready for review
September 23, 2026 13:14
werzerbb
approved these changes
Sep 29, 2026
Builds Impala and runs the unit tests that need no minicluster inside a prebuilt environment image (docker/ci/env.Dockerfile, published to GHCR under a hash of its inputs), with the checkout bind-mounted into a container of it. The image also carries the Python packages buildall.sh needs, whose tarballs are gitignored and would otherwise be downloaded from PyPI on every run. The workflow steps only call scripts in docker/ci/, which work the same way locally; see docker/ci/README.md for the test selection and how to read a failure.
giggsoff
force-pushed
the
feat/ci-unit-tests
branch
from
September 29, 2026 12:29
3f3ed27 to
ae65225
Compare
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.
Runs the backend and frontend unit tests that need no minicluster on GitHub-hosted runners.
The build environment (dependencies, JDK 21, Maven, the Arenadata Hadoop/Hive components, the native toolchain) is a prebuilt image published to GHCR and rebuilt only when its inputs change; each stage runs in a container of it with the checkout bind-mounted. The workflow steps are one-line calls to scripts in
docker/ci/, which work the same way on a workstation. A run takes about 30 minutes with that image and the ccache warm (1 min pull, 10 min build, 13 min tests), and about 50 minutes when the image has to be rebuilt first.Not everything runs: tests that need HDFS, a running impalad, Kudu, HBase, Ranger, HMS events or the
functionaltest data are skipped — 9 of 153 backend test binaries and 64 of 110 frontend test classes, each listed with a reason indocker/ci/be-tests-exclude.txtanddocker/ci/fe-tests-exclude.txt. Every frontend class that is not listed runs, so a new one that needs a cluster turns CI red until it is added.docker/ci/README.mdexplains how to read a failure, when to skip a test and when to fix the environment instead, and how to reproduce either locally.Also in this PR:
java/pom.xmlresolves Arenadata artifacts from the publicmaven.arenadata.io(no GitHub credentials needed for a build),docker/daemon_entrypoint.shdetects Java 21,UdfExecutorTestcompares doubles within a few ULPs, andpip_download.pyfetches package files fromfiles.pythonhosted.orginstead of thepypi.orgredirect to it, which answers 503 while unhealthy and leaves every download retrying against a dead endpoint.