CI/CD
This project's CI/CD uses GitHub Actions; workflow files live in .github/workflows/ (see the README.md in that directory).
Workflows (the 2 that exist)
1. ci.yml (name: CI)
Triggers: push to
main,v*tags, PRs tomain, Release published,workflow_dispatch(with aversioninput to override the release version)Runs on
ubuntu-latestwithtimeout-minutes: 60and this concurrency control (from the workflow):yamlconcurrency: group: ci-<ref> cancel-in-progress: true<ref>isgithub.ref(the push/PR branch ref); older runs on the same ref get cancelledSteps:
actions/checkout@v6(fetch-depth: 0, so axion-release can read tags)actions/setup-java@v5(Temurin 17,cache: gradle)docker compose -f docker-compose.test.yml up -d, waiting until all 4 services (Redis/MySQL/PostgreSQL/Elasticsearch) are healthy (timeout 180)./gradlew clean check jacocoRootReport --warning-mode=all(unit + integration tests + the aggregate coverage gate)codecov/codecov-action@v5uploadsbuild/reports/jacoco/jacocoRootReport/jacocoRootReport.xml(fail_ci_if_error: false)- Teardown
docker compose -f docker-compose.test.yml down -v
Publishing to Maven Central runs after step 4, triggered by any of: Release published /
workflow_dispatchwith a version / av*tag push- Authentication:
ORG_GRADLE_PROJECT_mavenCentralUsername/Password,centralPortalUsername/Password(from secretsCENTRAL_PORTAL_USERNAME/CENTRAL_PORTAL_TOKEN), and an in-memory GPG key (GPG_PRIVATE_KEY/GPG_PASSWORD) - Command:
./gradlew publishAllPublicationsToMavenCentralRepository(Vanniktech plugin, Central Portal); manual dispatch overrides with-Pversion=, otherwise axion-release derives the version from thev*tag
- Authentication:
2. docs.yml (name: Docs (GitHub Pages))
- Triggers: push to
maintouchingdocs/**or.github/workflows/docs.yml, plusworkflow_dispatch - Permissions:
contents: read,pages: write,id-token: write; concurrency grouppages - Sequence:
actions/checkout@v7→actions/setup-node@v7(Node 24, cachingdocs/package-lock.json) →npm ci→npm run docs:build(DOCS_BASE=/<repo>/) →actions/upload-pages-artifact@v5(docs/.vitepress/dist) →actions/deploy-pages@v5 - The site is published at https://cuihairu.github.io/redis-streaming/
Local equivalents
bash
# CI main flow (needs Docker)
docker compose -f docker-compose.test.yml up -d
./gradlew clean check jacocoRootReport
docker compose -f docker-compose.test.yml down -v
# Documentation site
cd docs && npm ci && npm run docs:buildRelated configuration
- Coverage scope and gate:
jacocoRootReport/jacocoRootCoverageVerificationin the rootbuild.gradle - Codecov:
codecov.ymlandcodecov-action@v5in the workflow - Build notes: root
CLAUDE.md; testing details:TESTING.md