Skip to content

kkRepo v0.4.0

Latest

Choose a tag to compare

@klboke klboke released this 14 Jul 04:51

kkRepo v0.4.0 adds first-class PostgreSQL persistence alongside MySQL, delivers Composer 2 hosted/proxy/group repositories, and strengthens dual-database packaging, deployment, migration, and compatibility validation.

Compare: v0.3.0...v0.4.0

Quick Start

Start the default MySQL-backed quickstart:

curl -fsSL https://raw.githubusercontent.com/klboke/kkrepo/main/scripts/quickstart.sh | bash

To start the PostgreSQL-backed quickstart instead:

curl -fsSL https://raw.githubusercontent.com/klboke/kkrepo/main/scripts/quickstart.sh \
  | KKREPO_DATABASE_TYPE=postgresql bash

The PostgreSQL variant selects docker-compose.quickstart-postgresql.yml and starts PostgreSQL 16 together with kkrepo. Both quickstart variants default to ghcr.io/klboke/kkrepo:0.4.0, expose the application at http://127.0.0.1:19090, and expose health checks at http://127.0.0.1:19091/actuator/health.

Download

  • kkrepo-0.4.0.zip: archive installer for Linux/macOS style deployments.
  • kkrepo-0.4.0.tar.gz: tarball installer with the same runtime layout.
  • kkrepo-0.4.0.sha256.txt: SHA-256 checksums for the release archives.

Container Image

docker pull ghcr.io/klboke/kkrepo:0.4.0
docker pull ghcr.io/klboke/kkrepo:latest

Image digest:

ghcr.io/klboke/kkrepo:0.4.0@sha256:751b0745bc51b59a954944cbaacb9fb0ffafa97f1db48b70d6c651caf14bba23

The image is published for linux/amd64 and linux/arm64 with provenance attestations.

Added

  • First-class PostgreSQL 12+ persistence alongside MySQL, including an equivalent V29 baseline, PostgreSQL-specific JSONB, search, upsert, coordination, locking, and timestamp behavior. MySQL remains the default backend. (#111)
  • Composer / PHP hosted, proxy, and group repositories for Composer 2, including Packagist proxy caching, Nexus-style semantic dist paths, archive upload, group resolution, Browse/Search/Usage integration, real Composer client E2E, Nexus live comparison, and selected Nexus proxy-cache migration. (#100)
  • MySQL and PostgreSQL quickstart, development, and compatibility Compose environments, plus a multi-replica Helm chart supporting either external database backend. (#111)
  • Real MySQL/PostgreSQL persistence contract suites, two-instance server smoke tests, PostgreSQL version coverage, Flyway parity checks, and expanded protocol, storage, migration, and worker tests. (#105, #106, #111)

Changed

  • Persistence is split into a database-neutral persistence-jdbc layer and ServiceLoader-selected MySQL or PostgreSQL dialect modules. (#109, #110, #111)
  • The MySQL V1-V29 migration history remains byte-for-byte preserved under a backend-specific Flyway location; future migrations must keep both database versions logically aligned. (#111)
  • Quickstart defaults, Dockerfile packaging, deployment documentation, and Helm application version now use 0.4.0.
  • Maven reactor versioning is centralized in the root revision property and flattened to concrete versions in installed or deployed POMs. (#112)

Compatibility And Validation

  • PostgreSQL uses the same repository, security, session, audit, token, migration, cache-watermark, worker-claim, and upload-session contracts as MySQL, including multi-replica cross-node smoke coverage. (#111)
  • Composer includes protocol/server tests, a non-skipping Nexus proxy comparison, hosted-to-proxy transitive dependency resolution, Basic-auth rejection, client-cache-cleared lock replay, and Nexus 3.92 datastore migration E2E coverage. (#100)
  • The executable jar and container image contain both JDBC drivers, both Flyway database modules, and both persistence backends; the backend is selected at runtime.
  • Release validation passed the Maven reactor, MySQL/PostgreSQL contract and server smoke suites, Nexus compatibility, three Nexus migration E2E versions, real client E2E on both databases, CodeQL, and OCI Distribution conformance.

Upgrade Notes

  • Existing v0.3.0 MySQL deployments can upgrade in place. Back up the database and blob store together before upgrading production deployments; MySQL remains the default when KKREPO_DATABASE_TYPE is not set.
  • PostgreSQL support is intended for new PostgreSQL-backed installations or a separately planned and validated data migration. Do not switch an initialized installation between MySQL and PostgreSQL by editing the JDBC URL.
  • For PostgreSQL, set KKREPO_DATABASE_TYPE=postgresql together with the PostgreSQL JDBC URL and credentials before first startup. Use a currently maintained PostgreSQL release in production; PostgreSQL 12 is the compatibility floor.
  • Validate Composer hosted archive policy, group member order, Basic credentials, proxy caching, and explicitly selected Nexus proxy migration in staging before cutover.

SHA-256

92d24d8e525d15401aa1716a2b8613391facfdc5c0daaf3c4b01774ef5ba704e  kkrepo-0.4.0.tar.gz
f15a9d8e84ef87b782b80229eda775c8a00dcab36195ed8b780285abb42015a7  kkrepo-0.4.0.zip