Skip to content

CASSJAVA-144: Move ASF CI from ci-cassandra Jenkins to GH Action - #2104

Open
SiyaoIsHiding wants to merge 3 commits into
apache:trunkfrom
SiyaoIsHiding:trunk
Open

SiyaoIsHiding wants to merge 3 commits into
apache:trunkfrom
SiyaoIsHiding:trunk

Conversation

@SiyaoIsHiding

Copy link
Copy Markdown
Contributor

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.

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"

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 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

Comment thread .github/workflows/ci.yml
Comment on lines +79 to +80
failed=$(grep -lE '<testsuite[^>]* (failures|errors)="[1-9]' \
$(find . -path '*/target/*-reports/TEST-*.xml') /dev/null || true)
Comment thread .github/workflows/ci.yml
Comment on lines +22 to +25
on:
push:
pull_request:
workflow_dispatch: # allow manual trigger from the Actions page
Comment thread .github/workflows/ci.yml
Comment on lines +113 to +116
- name: Publish test results
uses: EnricoMi/publish-unit-test-result-action@v2
with:
files: artifacts/**/TEST-*.xml

This branch has not been deployed

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants