Harbor v2.16.0 (dev)
Features
- Reconcile the Harbor Next database schema against an authoritative definition (#711)
- Add a dedicated audit-log configuration page (#705) — Docs: Configure Audit Logging
- Capture the client IP and user agent in audit logs for artifact push, pull, and delete, validating and truncating the values before they are stored (#701, #704, #709) — Docs: Working With Logs
- chart: Add a production-ready Helm chart (#56)
- ci: Add a zero-CVE pipeline (#359)
- lint: Add Go quality linters (#325)
- metric: Run the exporter collectors in core (#566)
- Replace ValidateHTTPURL with a schema-aware ValidateURL (#742)
Bug Fixes
- Address upstream sync review feedback (63b3ab4, f071003, a01fa1f)
- Block deleting an attestation out from under its index (311c2aa)
- Bound proxy-cache background goroutines to prevent a leak (#257)
- build: Stamp version metadata into the trivy-adapter and Trivy binaries (#459)
- Cache scannability lookups per artifact-list request (#212)
- cache: Defer cache eviction until after commit and make retry context-aware (#300)
- cache: Replace keyMutex with singleflight and stop canceling the cache Save (#277)
- Carry the X-Is-Resource-Name header into audit metadata (#659)
- Constrain /registries/ping to saved registry settings (#398)
- core: Prevent a core file-descriptor and goroutine leak when the registry is unresponsive (#254)
- core: Reduce auth-failure log noise and skip basic auth for non-admins in OIDC/LDAP/UAA (#313)
- Correct grammar in a committed key comment (#505)
- Correct grammar and capitalization inconsistencies across Go source files and docs (9783d50)
- db: Honour an explicitly configured min_conns of 0 (#565)
- deps: Bump Harbor Scanner Trivy to v0.38.1 (#415)
- deps: Remediate zero-CVE findings (#467, #509, #516)
- deps: Resolve non-UI CVEs (#374)
- Harden proxy-cache repository filter validation (ef3f626)
- Install the gh CLI in the release workflow (d5f0674)
- Return a proper error instead of HTTP 500 on invalid UTF-8 input (#321)
- ldap: Use a custom orm.ReadOrCreate to prevent LDAP login failures (#323)
- orm: Discard AfterCommit hooks of a rolled-back savepoint (#598)
- Point the More Info link to 8GCR (#293)
- portal: Make log-rotation settings savable and surface no-op purge schedules (#463)
- Preserve categorized release notes (#215)
- Push Trivy adapter images without the Harbor prefix (#227)
- quota: Enable retry backoff on quota-usage updates (#716)
- release: Track the next development version on main (#360)
- Resolve upstream sync review inconsistencies (9765e4e)
- Restore the 0171 migration for the upstream 2.14.x upgrade path (#292)
- Restore a buildable Trivy adapter pin (a5101ec)
- Restore dev up with rootless Podman (#401)
- Return 404 for missing repository artifacts (#322)
- scan: Keep the SBOM accessory push on the local registry when CORE_URL has no port (#465)
- scan: Make vulnerability-report persistence idempotent (#259)
- security: Avoid an audit-event panic on nil user data (#402)
- Show an ellipsis for truncated tags in the artifact list (#666)
- Update release-please-config-maintenance.json (aee4893)
Updates
- blob: Skip a redundant blob Touch when the blob is already StatusNone (#397)
- core: Avoid eager structured-logger construction on demoted auth-failure logs (#317)
- quota: Coalesce per-request refresh through the deferred flush (#719)
- quota: Skip usage reservation when hard limits are unlimited (#734)
- Bound attestation subject lookups in the index abstractor (5dc252d)
- Complete the YS review and update to ys-0.2.31 (#672)
- Decouple the lookup budget from the child count and cache subjects (7a7b308)
- Extract manifest abstraction into a registry (e32dcbd)
- Fail startup when a manifest abstractor cannot register (40a463e)
- Match the upstream comments on AccessoryCandidate (7fd676a)
- Move attestation classification into the manifest package (3d699f5)
- Skip building the child list for indexes without attestations (b87515e)
Upstream
- Fix max_upstream_conn validation bugs (goharbor/harbor#22681)
- Fix a nil dereference in the StopScanArtifact scan-type parameter (goharbor/harbor#23412)
- Prevent an HTTP 500 on invalid query input (goharbor/harbor#23670)
- Propagate CSV marshal errors in scan data export (goharbor/harbor#23369)
- registry: Prevent JobserviceSecret and stored-credential exfiltration (goharbor/harbor#23671)
- Remove the Redis URL from error logs to avoid exposing the Redis password (goharbor/harbor#23657)
- ui: Remove a hardcoded SBOM permission override (goharbor/harbor#23223)
- Fix TCR provider adapter parsing of international secret IDs (goharbor/harbor#22869)
- Add a size limit for manifest uploads (goharbor/harbor#23500)
- Add a ListReferrers API to the registry client and update parseScopes (goharbor/harbor#23170)
- Add proxy-cache hit/miss metrics (goharbor/harbor#23578)
- Add a size limit for the audit-log payload (goharbor/harbor#23755)
- Add a UI option to enable the proxy-cache referrer API (goharbor/harbor#23151)
- Bump Go from 1.25.7 to 1.26.3 (goharbor/harbor#23235)
- Bump Trivy to v0.71.1 and the Trivy adapter to v0.37.1-rc.1 (goharbor/harbor#23388)
- Call the /v2/auth/token API to get a bearer token for the Docker Hub adapter (goharbor/harbor#23088)
- Update the Trivy adapter to v0.37.1 (goharbor/harbor#23423)
- deps: Bump Go modules to fix known vulnerabilities (goharbor/harbor#23720)
- deps: Revert github.com/gorilla/csrf to v1.7.2 (goharbor/harbor#23759)
- deps: Update go.mod dependencies to patch versions (goharbor/harbor#23751)
- acr: Add artifact to the supported resource types (goharbor/harbor#23392)
- audit: Add member create/update/delete audit events (goharbor/harbor#23228)
- backend: Implement the proxy-cache repository filter API (goharbor/harbor#23527)
- gc: Use human-readable sizes in GC log messages (goharbor/harbor#23123)
- session: Prevent background polling from renewing the session TTL (goharbor/harbor#22980)
- ui: Support advanced proxy-cache configurations in the UI (goharbor/harbor#23536) — Docs: Proxy Cache Projects
- Fix an issue in the scanner API (goharbor/harbor#23061)
- Add a newline to the escape pattern (goharbor/harbor#23697)
- Add i18n keys and missing translations (goharbor/harbor#23002)
- Add missing validation when creating a robot account (goharbor/harbor#23691)
- Add a registry component to proxy configuration support (goharbor/harbor#23437)
- Address unsafe type assertions that could cause panics across packages (goharbor/harbor#23571)
- Allow resizing the SBOM column in the artifact table (goharbor/harbor#23646)
- Bump repository update_time on tag and artifact changes (goharbor/harbor#23225)
- Convert robot-account ID columns and sequence to bigint (goharbor/harbor#23633)
- Convert setup_timestamp, status_revision, and revision columns to bigint to avoid Y2K38 overflow (goharbor/harbor#23718)
- Disallow an empty robot_name_prefix so OIDC CLI login is not blocked (goharbor/harbor#22556)
- Remove a duplicated “by” in beego ORM TableName comments (goharbor/harbor#23234)
- Enable chunked blob upload for Azure ACR replication (goharbor/harbor#23016)
- Fix a potential SQL injection (goharbor/harbor#23418)
- Fix a theoretical timing vulnerability (goharbor/harbor#23433)
- Guard against division by zero when merging scan-report summaries (goharbor/harbor#23572)
- Increase the access_key column length to 4096 (goharbor/harbor#23414)
- Fix member audit-log resolution after transaction commit (goharbor/harbor#23586)
- Neutralize CSV formula injection in scan export (goharbor/harbor#23677)
- Skip corrupted encrypted config values on decryption failure (goharbor/harbor#23376)
- Use errors.Is for sentinel error checks in the usergroup controller (goharbor/harbor#23636)
- Use a LEFT JOIN in projectBasicSQL to include projects without quota records (goharbor/harbor#23520)
- Validate max_upstream_conn values on the backend (goharbor/harbor#22678)
- auditext: Add a nil guard in manager Create (goharbor/harbor#23107)
- cache: Replace keyMutex with singleflight and avoid canceling the cache Save (goharbor/harbor#23336)
- cnai-parser: Enforce an actual byte limit to prevent decompression bombs (goharbor/harbor#23497)
- dao: Use context-aware methods for database operations in MetaDAO (goharbor/harbor#23074)
- distribution: Allow editing an instance without credentials (goharbor/harbor#23165)
- ecr: Use the amazonaws.com.cn domain for AWS China region endpoints (goharbor/harbor#23326)
- gc: Redact redis_url_reg from GC extra attrs (goharbor/harbor#23134)
- i18n: Localize the max-upstream-connection placeholder (goharbor/harbor#23197)
- replication: Fix incorrect error propagation in getAccessoryArts (goharbor/harbor#23569)
- repoproxy: Prevent proxy-cache poisoning via the robot-name prefix (goharbor/harbor#23675)
- retention: Avoid stripping the repository path twice (goharbor/harbor#23546)
- scan: Use the created time from annotations in the accessory artifact (goharbor/harbor#23113)
- security: Validate the blob-mount source project and reject tokens missing iat (goharbor/harbor#23270)
- ui: Update bindings in the Project Policy config (goharbor/harbor#22694)
- ui: Use the selected tag for the pull-command copy (goharbor/harbor#23240)
- Improve API completeness (goharbor/harbor#23476)
- Harden crypto usage and drop the unused SMTP package (goharbor/harbor#23307)
- blob: Fix a full table scan in the unassociation check (goharbor/harbor#22994)
- replication: Filter event policies in the query (goharbor/harbor#23283)
- Prevent an HTTP 500 when no project members are provided (goharbor/harbor#23642)
- Proxy the referrer API to the upstream registry with paging and local merge (goharbor/harbor#23237)
- Remove deprecated io/ioutil usage (goharbor/harbor#23611)
- Replace the deprecated golang.org/x/net/context (goharbor/harbor#23630)
- config: Centralize the registry HTTP client timeout (goharbor/harbor#23154)
- task: Use a Redis SET with SPOP for outdate execution-status refresh (goharbor/harbor#23183)
- Replace gopkg.in/yaml.v2 with github.com/goccy/go-yaml (goharbor/harbor#23349)
- Set blob response headers before streaming the body (goharbor/harbor#23374)
- Accelerate flaky tests by removing time.Sleep (goharbor/harbor#23692)
- Reduce arbitrary sleep delays in core auth and awsecr tests (goharbor/harbor#23722)
- Update and improve the zh-TW Traditional Chinese locale (goharbor/harbor#23315)
- Add a source column to artifact_accessory to identify the accessory (goharbor/harbor#23144)
- Update the ECR adapter to allow ecr-public to be mirrored (goharbor/harbor#22351)
- Upgrade Harbor go.mod OSS packages (goharbor/harbor#23314)