Ramkumar Chinchani
55b68228da
feat(storage): redirect blob pulls to backend URLs ( #4092 )
...
* feat(storage): redirect blob pulls to backend URLs
* fix: rebase conflicts
Signed-off-by: Ramkumar Chinchani <rchincha.dev@gmail.com >
* refactor: rename redirect field
Signed-off-by: Ramkumar Chinchani <rchincha.dev@gmail.com >
* test: relax brittle TestPeriodicGC substore log assertion
Signed-off-by: Ramkumar Chinchani <rchincha.dev@gmail.com >
* feat(storage): improve blob redirect config handling and validation
Signed-off-by: Ramkumar Chinchani <rchincha.dev@gmail.com >
* fix(storage): address PR review feedback for blob redirect
Signed-off-by: Ramkumar Chinchani <rchincha.dev@gmail.com >
* feat(storage): apply latest PR review fixes for blob redirect
Signed-off-by: Ramkumar Chinchani <rchincha.dev@gmail.com >
* test: fix blob redirect and verify test regressions
Signed-off-by: Ramkumar Chinchani <rchincha.dev@gmail.com >
* fix(storage): enforce redirectBlobURL validation and add redirect tests
Signed-off-by: Ramkumar Chinchani <rchincha.dev@gmail.com >
* fix(storage): fix err113/noctx lint errors in storage driver tests
- Replace httptest.NewRequest with httptest.NewRequestWithContext in
s3, gcs, and imagestore driver tests (noctx)
- Replace dynamic errors.New in s3 driver test with a package-level
static sentinel error (err113)
Signed-off-by: Ramkumar Chinchani <rchincha.dev@gmail.com >
* test(storage): use temp dirs in imagestore redirect tests
Signed-off-by: Ramkumar Chinchani <rchincha.dev@gmail.com >
* fix: handle ranged blob redirects and add regression tests
Signed-off-by: Ramkumar Chinchani <rchincha.dev@gmail.com >
* fix: validate blob digest consistently in GetBlob
Signed-off-by: Ramkumar Chinchani <rchincha.dev@gmail.com >
* test: fix GetBlobPartialFn mock return values for range requests
The test 'does not redirect ranged blob requests' was failing because the mock
was returning incorrect length values. For a range request 'bytes=0-0' (1 byte),
it was returning 4 bytes, which caused a length mismatch check in GetBlob to
return HTTP 500.
Fix the mock to dynamically calculate the correct length: to - from + 1
Signed-off-by: Ramkumar Chinchani <rchincha.dev@gmail.com >
* fix(storage): preserve signed URL bytes in normalizeBlobRedirectURL
Preserve the original URL bytes from backend storage drivers (important
for signed/presigned URLs) while only lowercasing the scheme prefix.
URL re-serialization via net/url can invalidate signatures through path
escaping or canonicalization.
Add regression tests covering signed URL query parameters and mixed-case
scheme handling.
Signed-off-by: Ramkumar Chinchani <rchincha.dev@gmail.com >
* fix(storage): address PR review comments for blob redirect
- Return signed redirect URLs unchanged; validate scheme/CRLF/host only,
no URL normalization that would corrupt signed URL bytes
- Add inline comments for all non-obvious decisions: range bypass, soft
fallback on invalid URL, local driver empty return, subpath resolution,
redirectBlobURL config constraint on local/empty driver
- Expand TestNormalizeBlobRedirectURL to cover allowed schemes (http/https),
parse failure, missing host, and CRLF injection cases
- Add TestIsBlobRedirectEnabled covering subpath-only enablement with
default store disabled
Signed-off-by: Ramkumar Chinchani <rchincha.dev@gmail.com >
* test(storage): address remaining blob redirect review comments
Signed-off-by: Ramkumar Chinchani <rchincha.dev@gmail.com >
* fix: gofumpt formatting in routes_test.go
Signed-off-by: Ramkumar Chinchani <rchincha.dev@gmail.com >
---------
Signed-off-by: Ramkumar Chinchani <rchincha.dev@gmail.com >
Co-authored-by: Akash Kumar <meakash7902@gmail.com >
2026-06-15 14:36:07 -07:00
Andrei Aaron
9991821295
fix: Updating a repository should not result in a corrupted index.json file if disk is full ( #3963 )
...
See https://github.com/project-zot/zot/issues/3924
Signed-off-by: Andrei Aaron <andreifdaaron@gmail.com >
2026-04-14 08:59:25 +03:00
Andrei Aaron
da426850e7
chore: update golangci-lint and fix all issues ( #3575 )
...
* chore: Update golangci-lint
Signed-off-by: Lars Francke <git@lars-francke.de >
* chore: fix all golangci-lint issues
- Remove deprecated `// +build` tags
- Fix godoclint, modernize, wsl_v5, govet, lll, gci, noctx issues
- Update linter configuration
- Modernize code to use Go 1.22+ features (for range N, slices.Contains, etc.)
- Update make check lint the privileged tests
Signed-off-by: Andrei Aaron <andreifdaaron@gmail.com >
---------
Signed-off-by: Lars Francke <git@lars-francke.de >
Signed-off-by: Andrei Aaron <andreifdaaron@gmail.com >
Co-authored-by: Lars Francke <git@lars-francke.de >
2025-11-22 23:36:48 +02:00
Luca Muscariello
2402296e9a
fix: migrate to Go module v2 for proper semantic versioning ( #3462 )
...
* fix: migrate to Go module v2 for proper semantic versioning
This change updates the module path from 'zotregistry.dev/zot' to
'zotregistry.dev/zot/v2' to comply with Go's semantic versioning rules.
According to Go's module versioning requirements, major version v2+
must include the major version in the module path. The current
module path 'zotregistry.dev/zot' only supports v0.x.x and v1.x.x
versions, making existing v2.x.x tags (like v2.1.8) unusable.
Changes:
- Updated go.mod module path to zotregistry.dev/zot/v2
- Updated all internal import paths across 280+ Go source files
- Updated configuration files (golangcilint.yaml, gqlgen.yml)
- Updated README.md Go reference badge
This fix enables proper use of existing v2.x.x Git tags and allows
external packages to import zot v2+ versions without compatibility
errors.
Resolves: Go module import compatibility for v2+ versions
Fixes : #3071
Signed-off-by: Luca Muscariello <muscariello@ieee.org >
* fix: regenerate GraphQL files with updated v2 import paths
The gqlgen tool needs to regenerate the GraphQL schema files after
the module path change to use the new v2 imports.
Signed-off-by: Luca Muscariello <muscariello@ieee.org >
---------
Signed-off-by: Luca Muscariello <muscariello@ieee.org >
2025-10-16 22:43:47 -07:00
Andrei Aaron
14736b8a53
ci: more sync/local driver tests to stabilize/increase coverage ( #3425 )
...
Signed-off-by: Andrei Aaron <andreifdaaron@gmail.com >
2025-10-02 09:19:43 -07:00
Andrei Aaron
5309e7f5cf
chore: increase/stabilize go test coverage ( #3411 )
...
* chore: increase/stabilize coverage for the local storage driver
Signed-off-by: Andrei Aaron <andreifdaaron@gmail.com >
* chore: add/stabilize coverage for soring ImageSummary objects
Signed-off-by: Andrei Aaron <andreifdaaron@gmail.com >
* chore: stabilize coverage in sync tests
Signed-off-by: Andrei Aaron <andreifdaaron@gmail.com >
---------
Signed-off-by: Andrei Aaron <andreifdaaron@gmail.com >
2025-10-01 15:24:38 -07:00
Jan-Otto Kröpke
fa4b69954d
build(deps): bump all dependencies ( #2532 )
...
* build(deps): bump all dependencies
Signed-off-by: Jan-Otto Kröpke <mail@jkroepke.de >
* build(deps): bump all dependencies
Signed-off-by: Jan-Otto Kröpke <mail@jkroepke.de >
Signed-off-by: Jan-Otto Kröpke <joe@cloudeteer.de >
* build(deps): bump all dependencies
Signed-off-by: Jan-Otto Kröpke <mail@jkroepke.de >
Signed-off-by: Jan-Otto Kröpke <joe@cloudeteer.de >
* build(deps): bump all dependencies
Signed-off-by: Jan-Otto Kröpke <mail@jkroepke.de >
---------
Signed-off-by: Jan-Otto Kröpke <mail@jkroepke.de >
Signed-off-by: Jan-Otto Kröpke <joe@cloudeteer.de >
2024-08-02 14:23:53 -07:00
Jan-Otto Kröpke
f618b1d4ef
ci(deps): upgrade golangci-lint ( #2556 )
...
* ci(deps): upgrade golangci-lint
Signed-off-by: Jan-Otto Kröpke <mail@jkroepke.de >
* build(deps): removed disabled linters
Signed-off-by: Jan-Otto Kröpke <mail@jkroepke.de >
* build(deps): go run github.com/daixiang0/gci@latest write .
Signed-off-by: Jan-Otto Kröpke <joe@cloudeteer.de >
* build(deps): go run golang.org/x/tools/cmd/goimports@latest -l -w .
Signed-off-by: Jan-Otto Kröpke <joe@cloudeteer.de >
* build(deps): go run github.com/bombsimon/wsl/v4/cmd...@latest -strict-append -test=true -fix ./...
Signed-off-by: Jan-Otto Kröpke <joe@cloudeteer.de >
* build(deps): go run github.com/catenacyber/perfsprint@latest -fix ./...
Signed-off-by: Jan-Otto Kröpke <joe@cloudeteer.de >
* build(deps): replace gomnd by mnd
Signed-off-by: Jan-Otto Kröpke <joe@cloudeteer.de >
* build(deps): make gqlgen
Signed-off-by: Jan-Otto Kröpke <joe@cloudeteer.de >
* build: Revert "build(deps): go run github.com/daixiang0/gci@latest write ."
This reverts commit 5bf8c42e1f .
Signed-off-by: Jan-Otto Kröpke <joe@cloudeteer.de >
* build(deps): go run github.com/daixiang0/gci@latest write -s 'standard' -s default -s 'prefix(zotregistry.dev/zot)' .
Signed-off-by: Jan-Otto Kröpke <joe@cloudeteer.de >
* build(deps): make gqlgen
Signed-off-by: Jan-Otto Kröpke <joe@cloudeteer.de >
* fix: wsl issues
Signed-off-by: Jan-Otto Kröpke <joe@cloudeteer.de >
* fix: wsl issues
Signed-off-by: Jan-Otto Kröpke <joe@cloudeteer.de >
* fix: wsl issues
Signed-off-by: Jan-Otto Kröpke <joe@cloudeteer.de >
* fix: wsl issues
Signed-off-by: Jan-Otto Kröpke <joe@cloudeteer.de >
* fix: wsl issues
Signed-off-by: Jan-Otto Kröpke <joe@cloudeteer.de >
* fix: wsl issues
Signed-off-by: Jan-Otto Kröpke <joe@cloudeteer.de >
* fix: wsl issues
Signed-off-by: Jan-Otto Kröpke <joe@cloudeteer.de >
* fix: wsl issues
Signed-off-by: Jan-Otto Kröpke <joe@cloudeteer.de >
* fix: wsl issues
Signed-off-by: Jan-Otto Kröpke <joe@cloudeteer.de >
* fix: wsl issues
Signed-off-by: Jan-Otto Kröpke <joe@cloudeteer.de >
* fix: wsl issues
Signed-off-by: Jan-Otto Kröpke <joe@cloudeteer.de >
* fix: wsl issues
Signed-off-by: Jan-Otto Kröpke <joe@cloudeteer.de >
* fix: wsl issues
Signed-off-by: Jan-Otto Kröpke <joe@cloudeteer.de >
* fix: wsl issues
Signed-off-by: Jan-Otto Kröpke <joe@cloudeteer.de >
* fix: wsl issues
Signed-off-by: Jan-Otto Kröpke <joe@cloudeteer.de >
* fix: wsl issues
Signed-off-by: Jan-Otto Kröpke <joe@cloudeteer.de >
* fix: wsl issues
Signed-off-by: Jan-Otto Kröpke <joe@cloudeteer.de >
* fix: wsl issues
Signed-off-by: Jan-Otto Kröpke <joe@cloudeteer.de >
* fix: wsl issues
Signed-off-by: Jan-Otto Kröpke <joe@cloudeteer.de >
* fix: wsl issues
Signed-off-by: Jan-Otto Kröpke <joe@cloudeteer.de >
* fix: wsl issues
Signed-off-by: Jan-Otto Kröpke <joe@cloudeteer.de >
* fix: wsl issues
Signed-off-by: Jan-Otto Kröpke <joe@cloudeteer.de >
* fix: wsl issues
Signed-off-by: Jan-Otto Kröpke <joe@cloudeteer.de >
* fix: wsl issues
Signed-off-by: Jan-Otto Kröpke <joe@cloudeteer.de >
* fix: check-log issues
Signed-off-by: Jan-Otto Kröpke <joe@cloudeteer.de >
* fix: gci issues
Signed-off-by: Jan-Otto Kröpke <joe@cloudeteer.de >
* fix: tests
Signed-off-by: Jan-Otto Kröpke <joe@cloudeteer.de >
---------
Signed-off-by: Jan-Otto Kröpke <mail@jkroepke.de >
Signed-off-by: Jan-Otto Kröpke <joe@cloudeteer.de >
2024-07-29 10:32:51 -07:00
Andrei Aaron
2d2e005449
fix(npe): handle case where os.Stat returns different error types in DirExists ( #2253 )
...
See https://github.com/project-zot/zot/actions/runs/7905369535/job/21577848110
Also add tests to fix some of the coverage fluctuations.
Signed-off-by: Andrei Aaron <aaaron@luxoft.com >
2024-02-18 08:00:00 +02:00