Repository navigation
CASSJAVA-144: Move ASF CI from ci-cassandra Jenkins to GH Action - #2104
SiyaoIsHiding wants to merge 3 commits into
Conversation
| echo "CCM_UPDATE_PID_DEFAULT_TIMEOUT=120" >> "$GITHUB_ENV" | ||
| # "-" tells bin/cassandra not to use jemalloc, skipping its unbounded `find` over the | ||
| # library dirs, which can exceed the pid timeout on a cold cache under parallel tests. | ||
| echo "CASSANDRA_LIBJEMALLOC=-" >> "$GITHUB_ENV" |
There was a problem hiding this comment.
This line is prolly the only essential difference from the Node.js driver's GHA. AI found it out this is the reason why sometimes the first integration test likes to fail with cassandra pid not found.
It makes sense to me. I think I will port this change to Node.js driver's GHA, too.
There was a problem hiding this comment.
🟡 Changes recommended
The CI report scan splits filenames containing spaces and suppresses read errors, allowing jobs to pass despite TCK failures.
3 open issues
What changed in this PR
Migrates the Java driver’s ASF CI from Jenkins to GitHub Actions, with reusable test-environment setup and test-result reporting.
Changes:
- Adds a Java 17/21 test matrix against Cassandra 3.11, 4.0, 4.1, and 5.0.
- Adds CCM setup, report uploads, and result publication.
- Removes Jenkins infrastructure and switches documentation builds to Java 17.
| File | Description |
|---|---|
Jenkinsfile-asf |
Removes the ASF Jenkins pipeline. |
ci/run-tests.sh |
Removes the Jenkins test runner. |
ci/install-jdk.sh |
Removes the legacy JDK installer. |
ci/create-user.sh |
Removes the container user-setup script. |
.github/workflows/publish-docs-gp-pages.yml |
Uses Java 17 for documentation builds. |
.github/workflows/ci.yml |
Adds matrix testing and test-result reporting. |
.github/actions/setup-ccm/action.yml |
Prepares CCM, JDKs, certificates, Simulacron, and Cassandra. |
Review effort: Balanced
| failed=$(grep -lE '<testsuite[^>]* (failures|errors)="[1-9]' \ | ||
| $(find . -path '*/target/*-reports/TEST-*.xml') /dev/null || true) |
| on: | ||
| push: | ||
| pull_request: | ||
| workflow_dispatch: # allow manual trigger from the Actions page |
There was a problem hiding this comment.
I mean, I guess...
The only thing scheduled builds are going to do for us are pick up variation in the patch version of a given Cassandra major/minor tree. Same is true for ccm, right, and ccm changes even less frequently. I guess I don't mind scheduled builds but it seems like the benefit here would be pretty small.
| - name: Publish test results | ||
| uses: EnricoMi/publish-unit-test-result-action@v2 | ||
| with: | ||
| files: artifacts/**/TEST-*.xml |


Example run:
https://github.com/SiyaoIsHiding/java-driver/actions/runs/40934985232
Largely reusing Node.js driver's GHA. Example user interface on a PR: https://redirect.github.com/apache/cassandra-nodejs-driver/pull/472
Disclose of Generative AI usage.