Skip to content

Latest commit

 

History

History
52 lines (45 loc) · 4.01 KB

File metadata and controls

52 lines (45 loc) · 4.01 KB

Repository Guidelines

Project Structure & Module Organization

  • Multi-module Maven repo with root pom.xml and service modules like apollo-configservice, apollo-adminservice, and apollo-portal, shared libs in apollo-common, and packaging in apollo-assembly.
  • apollo-biz is a shared business-logic module used by services like config/admin (not a standalone service).
  • Build and release tooling lives in scripts/ (e.g., scripts/build.sh) and apollo-buildtools/ (code style configs).
  • Database and schema assets are under scripts/sql and module src/main/resources folders.
  • Tests follow standard Maven layout: */src/test/java and */src/test/resources inside each module.
  • Documentation is in docs/.

Build, Test, and Development Commands

  • ./mvnw -DskipTests package builds all modules.
  • ./mvnw test runs the full test suite via Surefire (may log warnings if local meta/admin services are not running).
  • ./mvnw -pl apollo-configservice -am test runs tests for a specific module and its dependencies.
  • ./mvnw spotless:apply formats code and must be run before opening a PR.
  • ./scripts/build.sh generates distributable packages (used for deployment workflows).

Coding Style & Naming Conventions

  • Follow Google Java Style Guide; 2-space indentation and standard Java conventions apply.
  • Use the IDE configs in apollo-buildtools/style/ (IntelliJ/Eclipse).
  • New Java classes should include a short Javadoc describing the class purpose.
  • Use standard Java naming: packages lower.case, classes UpperCamelCase, tests *Test.

OpenAPI Contract Workflow (apollo-portal)

  • Treat OpenAPI as contract-first: update spec in apolloconfig/apollo-openapi before (or together with) portal implementation changes.
  • apollo-portal/pom.xml uses apollo.openapi.spec.url + openapi-generator-maven-plugin; generated sources under target/generated-sources/openapi/src/main/java are added to compile path via build-helper-maven-plugin.
  • For new/changed OpenAPI endpoints, prefer implementing generated *ManagementApi interfaces and generated models; avoid introducing hand-written DTO/controller contracts that bypass the spec pipeline.
  • In PR review, verify contract alignment explicitly: endpoint path, request/response model, and permissions in apollo should match the spec in apollo-openapi.

Testing Guidelines

  • JUnit 5 is the default, with Vintage enabled for legacy JUnit 4 tests.
  • Put new tests under the module’s src/test/java with *Test suffix.
  • Add unit tests for new features or important bug fixes.

Commit & Pull Request Guidelines

  • Use Conventional Commits format (e.g., feat:, fix:).
  • If a commit fixes an issue, append Fixes #123 in the commit message.
  • Commit only on feature branches; never commit directly to master or main.
  • CHANGES.md entries must use a PR URL in Markdown link format; if the PR URL is not available yet, open the PR first, then add/update CHANGES.md in a follow-up commit.
  • Rebase onto master and squash feature work into a single commit before merge.
  • When merging a PR on GitHub: if it has a single commit, use rebase and merge; if it has multiple commits, use squash and merge.
  • Non-trivial contributions require signing the CLA.
  • Open a feature branch for your change and submit a PR using .github/PULL_REQUEST_TEMPLATE.md.
  • PRs should include a clear description, tests run, and any relevant screenshots/logs; use GitHub issues for tracking.
  • The PR checklist expects mvn clean test, mvn spotless:apply, and an update to CHANGES.md.
  • For upstream contributions, open PRs against apolloconfig/apollo and fill the template with real content (not the raw template text).

Security & Configuration Notes

  • Apollo supports H2 in-memory for local development and MySQL for production; prefer H2 locally unless you need a real database.
  • Review scripts/sql and environment config when using MySQL.
  • Do not commit secrets or environment-specific credentials; use local overrides instead.
  • Follow SECURITY.md for vulnerability reporting.