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 | bashTo start the PostgreSQL-backed quickstart instead:
curl -fsSL https://raw.githubusercontent.com/klboke/kkrepo/main/scripts/quickstart.sh \
| KKREPO_DATABASE_TYPE=postgresql bashThe 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:latestImage 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-jdbclayer 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
revisionproperty 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_TYPEis 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=postgresqltogether 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