Contributing
This project needs contributors to preserve one rule: profiling changes must prove real profile data, not just a healthy UI.
Development setup
Run commands from the repository root.
go test ./...
javac --release 11 java-helper/thread-diagnostics/src/main/java/com/ebpfjava/threads/*.java
cd examples/jdk17-http-demo && mvn test
cd ../../web && npm ci && npm test && npm run buildDocs site
cd docs
npm install
npm run docs:devBuild before publishing docs changes:
cd docs
npm run docs:buildThe docs site is bilingual. English is the source language, and Chinese covers the core user and contributor paths. See Localization before adding or moving public docs pages.
Real acceptance
Use real Kubernetes acceptance for changes touching collector profiling, ingestion, ClickHouse storage, backend query APIs, deployment, the demo service, or the profile UI.
export KUBECONFIG=$HOME/backup/localk8s.yaml
scripts/real-acceptance.sh \
--service jdk17-http-demo \
--configure-profiler \
--require-full-profiling \
--high-volume \
--artifact-dir /tmp/java-profiler-real-acceptance-$(date +%Y%m%d%H%M%S)Passing means the run produced accepted target status, non-empty CPU/allocation/lock profiles, ClickHouse rows, ingestion evidence, bounded retention, browser UI evidence, and no target workload restart increase.
Screenshot evidence
Docs screenshots should come from a real UI connected to a real backend.
export REAL_ACCEPTANCE_BASE_URL=http://127.0.0.1:18081
export REAL_ACCEPTANCE_NAMESPACE=java-profiler-qa
export REAL_ACCEPTANCE_SERVICE=jdk17-http-demo
node scripts/capture-doc-screenshots.mjs