Skip to content

feat(registry): add Nexus-compatible named Maven and npm registries - #889

Draft
ivaseeq wants to merge 3 commits into
getnora-io:mainfrom
ivaseeq:agent/nora-maven-npm-nexus-compat
Draft

feat(registry): add Nexus-compatible named Maven and npm registries#889
ivaseeq wants to merge 3 commits into
getnora-io:mainfrom
ivaseeq:agent/nora-maven-npm-nexus-compat

Conversation

@ivaseeq

@ivaseeq ivaseeq commented Aug 1, 2026

Copy link
Copy Markdown
Contributor

What changed

  • adds named Maven hosted, proxy, and group repositories with Nexus-compatible routes and policies
  • adds separate npm hosted, proxy-cache, and ordered group repositories
  • keeps npm hosted manifests, tarballs, tags, deprecations, package fields, and rebuildable packument cache separate from proxy state
  • materializes hosted npm packuments so warm metadata reads use one object-store GET instead of one GET per package version
  • invalidates the derived packument cache under the package mutation lock for publish, dist-tag, deprecation, and retention changes
  • adds conditional immutable writes, retention, GC, indexing, metrics, UI, auth, and OpenAPI support for the named layouts

Why

This enables a fresh Nora installation to replace the developer-facing Maven and npm flows currently served by Nexus. Clients retain their standard Maven and npm commands; deployments change only registry endpoints and authentication material.

The packument cache fixes a migration and developer-flow failure observed with packages containing thousands of versions: every metadata request previously fanned out into thousands of S3 reads and exceeded the ingress timeout. The cache is derived and rebuildable; authoritative hosted state remains split by responsibility.

The target topology is a singleton writer. Migration from older Nora object layouts and active-active mutable metadata coordination are intentionally outside this change.

Validation

  • cargo fmt --all -- --check
  • cargo clippy -p nora-registry --all-targets -- -D warnings
  • library tests: 63 passed
  • binary tests: 1,797 passed, 1 ignored
  • documentation tests: 6 passed, 1 ignored
  • git diff --check
  • targeted tests cover cold/warm packument reads, per-route tarball URL rewriting, mutation invalidation, fail-closed invalidation, retention, and proxy-cache isolation
  • combined Maven/npm acceptance and live Nexus-to-Nora migration are tracked separately against the digest built from this source

@ivaseeq ivaseeq changed the title Add Nexus-compatible named Maven and npm registries feat(registry): add Nexus-compatible named Maven and npm registries Aug 2, 2026
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.

1 participant