6046 Commits
Author SHA1 Message Date
Milos Gajdos e4ee88b911 docs(notifications): describe the event target fields separately (#5051) 2026-10-27 17:43:33 -04:00
NopeCharon fd43b53786 docs: describe the notification event target fields separately
The events table in the notifications documentation listed length,
repository, fromRepository, url and tag as fields of the event itself,
while they are fields of the event target, as the example below the
table shows. The table also did not mention the size and mediaType
fields the target carries, nor the references field set when
notifications.events.includereferences is enabled.

Split the table into the event fields and the target fields, and note
that the target embeds an OCI descriptor whose mediaType, digest and
size are always serialized. Update the delete event example to match
what the registry sends, and point the godoc links at the v3 module.

Fixes #4650

Signed-off-by: NopeCharon <115794254+NopeCharon@users.noreply.github.com>
2026-10-26 21:33:50 +05:30
Milos Gajdos 5c6afb92ff build(deps): bump go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc from 1.42.0 to 1.45.0 in the go_modules group across 1 directory (#5047) 2026-10-25 10:35:00 -04:00
dependabot[bot] 9b7b98ce62 build(deps): bump go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc
Bumps the go_modules group with 1 update in the / directory: [go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc](https://github.com/open-telemetry/opentelemetry-go).


Updates `go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc` from 1.42.0 to 1.45.0
- [Release notes](https://github.com/open-telemetry/opentelemetry-go/releases)
- [Changelog](https://github.com/open-telemetry/opentelemetry-go/blob/main/CHANGELOG.md)
- [Commits](https://github.com/open-telemetry/opentelemetry-go/compare/v1.42.0...v1.45.0)

---
updated-dependencies:
- dependency-name: go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc
  dependency-version: 1.45.0
  dependency-type: indirect
  dependency-group: go_modules
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-10-25 14:22:27 +00:00
Milos Gajdos b506aa7a75 fix(deps): bump vulnerable deps (#5046) 2026-10-25 10:20:13 -04:00
Milos Gajdos 89bd800143 fix(deps): bump vulnerable deps
Signed-off-by: Milos Gajdos <milosthegajdos@gmail.com>
2026-10-24 13:37:49 -04:00
Milos Gajdos ee80aa6ad6 build: bump Go to 1.26.10 in Dockerfiles (#5043) 2026-10-24 13:31:11 -04:00
Milos Gajdos ddf4b31fc6 feat(proxy): add opt-in Range pass-through (#5044) 2026-10-24 13:28:28 -04:00
jeongho-kim 89fc70490e client: preserve blob digest after redirects
Signed-off-by: jeongho-kim <jeongho.kim@toss.im>
2026-10-24 12:05:58 +09:00
Pujitha Paladugu a22d72fb43 build: bump Go to 1.26.10 in Dockerfiles
Motivation: the Dockerfiles pin GO_VERSION=1.26.8, so release and edge
images are built with a Go toolchain that predates the 1.26.9 and 1.26.10
security releases (including a mime/multipart memory limit bypass and
crypto/x509 intermediate certificate distrust). Rebuilds still produce
go1.26.8 binaries because of the pin.

Approach: bump the GO_VERSION ARG from 1.26.8 to 1.26.10 in Dockerfile and
dockerfiles/{docs,git,lint,vendor}.Dockerfile, as was done for the previous
bump. The CI matrix in build.yml uses 1.26.x and needs no change. No source
changes. This does not cut a patch release; that is a maintainer decision.

Validation: Docker is not available on this machine, so I did not build the
images. I confirmed the golang:1.26.10-alpine tag exists on Docker Hub and
grepped that no other 1.26.8 pin remains. The change only alters a base
image tag; no Go code or tests are affected.

Report: https://github.com/distribution/distribution/issues/5040
Signed-off-by: Pujitha Paladugu <10557236+pujitha24@users.noreply.github.com>
Assisted-by: claude-sonnet-5-5 (via Claude Code)
2026-10-22 11:12:51 -07:00
jeongho-kim 355b036bf9 proxy: add opt-in Range pass-through
Relay cache-miss blob Range requests to the upstream when
proxy.rangepassthrough is enabled, without populating the blob cache.
Preserve upstream 200, 206 and 416 responses while keeping ordinary GET
cache fills and cache-hit handling unchanged.

Reuse the authenticated client, abort interrupted streams, and exclude
416 responses from blob transfer metrics and pull notifications.
Document the option and cover the HTTP and cache behavior in tests.

Signed-off-by: jeongho-kim <jeongho.kim@toss.im>
2026-10-22 17:18:21 +09:00
Milos Gajdos b9a4745811 build(deps): bump docker/bake-action from 7.4.0 to 7.5.0 in the docker-actions group (#5032) 2026-10-21 08:13:02 -07:00
dependabot[bot] 7e0da43908 build(deps): bump docker/bake-action
Bumps the docker-actions group with 1 update: [docker/bake-action](https://github.com/docker/bake-action).


Updates `docker/bake-action` from 7.4.0 to 7.5.0
- [Release notes](https://github.com/docker/bake-action/releases)
- [Commits](https://github.com/docker/bake-action/compare/018cb6412ab401ebaa809aa5f85966b74628600f...59cb1203cd42bcefd40a1b6d73b589e48c86040e)

---
updated-dependencies:
- dependency-name: docker/bake-action
  dependency-version: 7.5.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: docker-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-10-21 01:17:36 +00:00
Milos Gajdos cff0ff0c92 build(deps): bump the codeql-actions group across 1 directory with 4 updates (#5014) 2026-10-20 08:29:36 -07:00
Milos Gajdos 7e14f50c52 build(deps): bump ossf/scorecard-action from 2.4.4 to 2.5.0 (#5031) 2026-10-20 08:11:51 -07:00
dependabot[bot] 6cb08c86db build(deps): bump the codeql-actions group across 1 directory with 4 updates
Bumps the codeql-actions group with 4 updates in the / directory: [github/codeql-action/init](https://github.com/github/codeql-action), [github/codeql-action/autobuild](https://github.com/github/codeql-action), [github/codeql-action/analyze](https://github.com/github/codeql-action) and [github/codeql-action/upload-sarif](https://github.com/github/codeql-action).


Updates `github/codeql-action/init` from 4.38.2 to 4.38.3
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/2892aa5e19bbd11bc0cff5427e3b750a04d9e3c2...24c54180a607b1449ed407dd24f251e4e9147c8d)

Updates `github/codeql-action/autobuild` from 4.38.2 to 4.38.3
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/2892aa5e19bbd11bc0cff5427e3b750a04d9e3c2...24c54180a607b1449ed407dd24f251e4e9147c8d)

Updates `github/codeql-action/analyze` from 4.38.2 to 4.38.3
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/2892aa5e19bbd11bc0cff5427e3b750a04d9e3c2...24c54180a607b1449ed407dd24f251e4e9147c8d)

Updates `github/codeql-action/upload-sarif` from 4.38.2 to 4.38.3
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/2892aa5e19bbd11bc0cff5427e3b750a04d9e3c2...24c54180a607b1449ed407dd24f251e4e9147c8d)

---
updated-dependencies:
- dependency-name: github/codeql-action/analyze
  dependency-version: 4.38.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: codeql-actions
- dependency-name: github/codeql-action/autobuild
  dependency-version: 4.38.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: codeql-actions
- dependency-name: github/codeql-action/init
  dependency-version: 4.38.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: codeql-actions
- dependency-name: github/codeql-action/upload-sarif
  dependency-version: 4.38.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: codeql-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-10-20 01:17:13 +00:00
dependabot[bot] 878dbe59a5 build(deps): bump ossf/scorecard-action from 2.4.4 to 2.5.0
Bumps [ossf/scorecard-action](https://github.com/ossf/scorecard-action) from 2.4.4 to 2.5.0.
- [Release notes](https://github.com/ossf/scorecard-action/releases)
- [Changelog](https://github.com/ossf/scorecard-action/blob/main/RELEASE.md)
- [Commits](https://github.com/ossf/scorecard-action/compare/2d1146689b8cda280b9bc96326124645441f03bc...fa7117db83c52d787ae5a89f350999701505d78e)

---
updated-dependencies:
- dependency-name: ossf/scorecard-action
  dependency-version: 2.5.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-10-20 01:13:22 +00:00
Milos Gajdos cc325ae74c build(deps): bump codecov/codecov-action from 6.0.1 to 7.1.1 (#5005) 2026-10-19 09:18:04 -07:00
Milos Gajdos 952d81c67b registry/storage: do not write hash state when closing a cancelled upload (#5021) 2026-10-18 09:25:38 -07:00
YoungjuKim 54058ad724 registry/storage: do not write hash state when closing a cancelled upload
Cancel removes the upload directory, but the handler then closes the
writer, and Close stores the hash state again. That recreates the
upload directory without a startedat file, so the upload purger can
never remove it, and Close reports "already closed". Skip storing the
hash state once the upload has been cancelled.

Signed-off-by: YoungjuKim <fjvbn2003@gmail.com>
2026-10-17 20:10:49 +09:00
Milos Gajdos 042c3a9a51 docs(storage-drivers/gcs): document credentials, maxconcurrency and useragent (#5018) 2026-10-16 16:46:07 -07:00
ump45nose 41688c0f58 docs(storage-drivers/gcs): document credentials, maxconcurrency and useragent
The GCS driver reads three parameters that the parameters table in
docs/content/storage-drivers/gcs.md does not list:

- `credentials`: an inline service account key, used when `keyfile` is
  not set. It already appears in the configuration.md example, but not
  in the driver page.
- `maxconcurrency`: the limit passed to base.NewRegulator. It defaults
  to 50 (defaultMaxConcurrency) and is raised to 25 (minConcurrency)
  when set lower.
- `useragent`: passed to the storage client with option.WithUserAgent.

Add a row for each.

Signed-off-by: ump45nose <52391318+ump45nose@users.noreply.github.com>
2026-10-17 07:35:22 +08:00
Milos Gajdos 7ffd469066 docs(storage-drivers/gcs): correct the documented chunksize default (#5017) 2026-10-16 13:17:47 -07:00
yuwk 92195a0912 docs(storage-drivers/gcs): correct the documented chunksize default
The GCS storage driver parameters table documents `chunksize` as
defaulting to 5242880 (5 MiB). The driver does not use that value:
`registry/storage/driver/gcs/gcs.go` defines

	defaultChunkSize = 16 * 1024 * 1024

and applies it when the `chunksize` parameter is absent, so the documented
default understates the actual chunk size by a factor of three and a third.

Correct the table to 16777216 (16 MiB).

Signed-off-by: yuwk <1729065730@qq.com>
2026-10-17 02:02:13 +08:00
Milos Gajdos 315f44a925 docs: fix the YAML key name in the platforms validation section (#5015) 2026-10-15 23:14:12 -07:00
yuwk f023eaf01a docs: fix the YAML key name in the platforms validation section
Signed-off-by: yuwk <1729065730@qq.com>
2026-10-16 08:41:55 +08:00
Milos Gajdos f7d69d28c2 driver/filesystem: fix uploads on Windows (#5012) 2026-10-14 13:00:17 -07:00
Milos Gajdos 84baa4692d registry/storage: avoid duplicate SHA-256 in canonical full-fallback validation (#4921) 2026-10-14 10:56:17 -07:00
Milos Gajdos 1c8ef77db2 build(deps): bump actions/upload-artifact from 7.0.1 to 7.0.2 (#5013) 2026-10-14 08:34:03 -07:00
dependabot[bot] 67ec221689 build(deps): bump actions/upload-artifact from 7.0.1 to 7.0.2
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 7.0.1 to 7.0.2.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/043fb46d1a93c77aae656e7c1c64a875d1fc6a0a...cf430e030ddbb5b0abf93d22962f4752f3646cd9)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: 7.0.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-10-14 12:06:45 +00:00
CrazyMax cf25a54ab3 ci: run unit tests on Linux and Windows
Run make test across Ubuntu and Windows with the latest Go 1.26 and 1.27
patch releases. This includes filesystem driver tests, which the existing
coverage target excludes, and catches Windows regressions before release.

Keep coverage and the Docker-backed S3 and Azure tests in a Linux-only job,
and require both test jobs before building artifacts.

Make the file health checks portable by using temporary directories and
closing the marker file before removing it. Check removal errors so a
failed deletion is reported directly.

Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-10-14 12:02:35 +02:00
CrazyMax 65804bfb78 driver/filesystem: fix uploads on Windows
Since v3.1.0, the filesystem driver has tried to rename an open temporary
file when creating an upload session, causing every blob upload on Windows
to fail with HTTP 500. Closing the file exposes a second failure when the
driver tries to sync the parent directory.

Close the temporary file before renaming it and make directory syncing a
no-op on Windows. Preserve file syncing, replacement semantics, and the
existing writer lifecycle contract. Return slash-separated storage keys
from List so callers can use them on every platform.

Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-10-14 10:48:57 +02:00
Milos Gajdos d7da5da1ce build(deps): bump actions/labeler from 6.1.0 to 7.0.0 (#4985) 2026-10-11 20:25:41 -07:00
Milos Gajdos be78ef9417 Include filesystem rootdirectory in PathNotFound errors (#5007) 2026-10-11 17:18:39 -07:00
Milos Gajdos 036e830f80 fix(handlers): return 400 NAME_INVALID for over-long repository names (#4995) 2026-10-11 16:36:42 -07:00
yusheng.wang 89b2357009 Include filesystem rootdirectory in PathNotFound errors
PathNotFoundError previously printed a storage-driver-relative path that callers treated as an absolute OS path. Include the filesystem driver's rootdirectory in the error message so the configured storage root is visible. Fixes #1793.

Signed-off-by: yusheng.wang <yusheng.wang@chaitin.com>
2026-10-10 04:25:53 +08:00
dependabot[bot] 3d7df6c5fa build(deps): bump codecov/codecov-action from 6.0.1 to 7.1.1
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 6.0.1 to 7.1.1.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/codecov/codecov-action/compare/e79a6962e0d4c0c17b229090214935d2e33f8354...303a32d7a59b442fa8d48b6a1cc6825c09c847a5)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-version: 7.1.1
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-10-09 01:18:27 +00:00
Milos Gajdos bbf0a189dc build(deps): bump the codeql-actions group across 1 directory with 4 updates (#4994) 2026-10-07 21:36:25 -07:00
dependabot[bot] 9992df89b9 build(deps): bump the codeql-actions group across 1 directory with 4 updates
Bumps the codeql-actions group with 4 updates in the / directory: [github/codeql-action/init](https://github.com/github/codeql-action), [github/codeql-action/autobuild](https://github.com/github/codeql-action), [github/codeql-action/analyze](https://github.com/github/codeql-action) and [github/codeql-action/upload-sarif](https://github.com/github/codeql-action).


Updates `github/codeql-action/init` from 4.38.1 to 4.38.2
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/1c5b675653bb5c22dbe9b12b556ec555138e09fd...2892aa5e19bbd11bc0cff5427e3b750a04d9e3c2)

Updates `github/codeql-action/autobuild` from 4.38.1 to 4.38.2
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/1c5b675653bb5c22dbe9b12b556ec555138e09fd...2892aa5e19bbd11bc0cff5427e3b750a04d9e3c2)

Updates `github/codeql-action/analyze` from 4.38.1 to 4.38.2
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/1c5b675653bb5c22dbe9b12b556ec555138e09fd...2892aa5e19bbd11bc0cff5427e3b750a04d9e3c2)

Updates `github/codeql-action/upload-sarif` from 4.38.1 to 4.38.2
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/1c5b675653bb5c22dbe9b12b556ec555138e09fd...2892aa5e19bbd11bc0cff5427e3b750a04d9e3c2)

---
updated-dependencies:
- dependency-name: github/codeql-action/analyze
  dependency-version: 4.38.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: codeql-actions
- dependency-name: github/codeql-action/autobuild
  dependency-version: 4.38.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: codeql-actions
- dependency-name: github/codeql-action/init
  dependency-version: 4.38.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: codeql-actions
- dependency-name: github/codeql-action/upload-sarif
  dependency-version: 4.38.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: codeql-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-10-08 01:16:55 +00:00
Milos Gajdos fd9609dd58 Fix inmemory driver find traversing too deep into directory nodes (#4996) 2026-10-07 07:48:39 -07:00
Tianon Gravi 2ff9628d81 Add a regression test for inmemory race
Signed-off-by: Tianon Gravi <admwiggin@gmail.com>
2026-10-06 16:48:20 -07:00
Milos Gajdos 8ceb7bbf72 build: reduce binary size via improved dead‑code elimination (#4997) 2026-10-04 18:05:48 -07:00
ningmingxiao f3556cdabf build: reduce binary size via improved dead‑code elimination
Signed-off-by: ningmingxiao <ning.mingxiao@zte.com.cn>
2026-10-05 08:48:30 +08:00
Tianon Gravi f9e83ae0b7 Fix inmemory driver find traversing too deep into directory nodes
When the final path component resolves to a directory, `q = q[i+1:]` with `i == -1` leaves `q` unchanged and recurses into the child -- going one level deeper than intended.  That is normally harmless, because the repeated lookup finds nothing and returns the directory it is already in, but it returns the wrong node when that directory has a child with the same name.

Guard with `i >= 0` so the found directory is returned directly.

Fixes an intermittent flake (~3-7% of runs) in `TestDeleteOnlyDeletesSubpaths`, which constructs `dirname/dirname` to deliberately trigger the ambiguous case.

Assisted-By: "claude my eyes right out"
Signed-off-by: Tianon Gravi <admwiggin@gmail.com>
2026-10-02 14:54:29 -07:00
Milos Gajdos f01dfc400e docs: fix "offical" typo in Azure storage documentation (#4992) 2026-10-01 08:09:54 -07:00
Frank Yu 7a667cb13b docs: restore generated API error-code anchor
Signed-off-by: Frank Yu <1729065730@qq.com>
2026-10-01 04:14:05 -07:00
somaz b1b87d9550 fix(handlers): return 400 NAME_INVALID for over-long repository names
A repository name whose path is longer than 255 characters fails
reference.WithName in the dispatcher. That branch appended a bare
distribution.ErrRepositoryNameInvalid to context.Errors, and since it
is not an errcode.ErrorCoder, errcode.ServeJSON answered 500 UNKNOWN.
Wrap it in errcode.ErrorCodeNameInvalid, as the Repository() branch
right below already does for the same error type.

Since a811c1bb moved the automatic error response into a deferred call
at the top of the dispatcher, the early returns for an invalid name, a
failed Repository() call and a failed repository middleware have each
written the error envelope twice: net/http drops the second WriteHeader
as superfluous and the body ends up with two JSON documents. Remove the
explicit ServeJSON calls and leave the response to the deferred handler.
The Repository() switch gains a default case, so an error of any other
type still gets a 500, now with an UNKNOWN entry instead of an empty
envelope.

Fixes #4699

Assisted-by: Claude Opus 5.5 (via Claude Code)
Signed-off-by: somaz <genius5711@gmail.com>
2026-10-01 18:08:15 +09:00
Milos Gajdos 1d71a5c78e build(deps): bump ossf/scorecard-action from 2.4.3 to 2.4.4 (#4991) 2026-09-30 07:37:06 -07:00
yuwk d585764950 docs: fix "offical" typo and stale Errors anchor
Signed-off-by: yuwk <1729065730@qq.com>
2026-09-30 13:58:35 +08:00
dependabot[bot] 3cf5242fb6 build(deps): bump ossf/scorecard-action from 2.4.3 to 2.4.4
Bumps [ossf/scorecard-action](https://github.com/ossf/scorecard-action) from 2.4.3 to 2.4.4.
- [Release notes](https://github.com/ossf/scorecard-action/releases)
- [Changelog](https://github.com/ossf/scorecard-action/blob/main/RELEASE.md)
- [Commits](https://github.com/ossf/scorecard-action/compare/4eaacf0543bb3f2c246792bd56e8cdeffafb205a...2d1146689b8cda280b9bc96326124645441f03bc)

---
updated-dependencies:
- dependency-name: ossf/scorecard-action
  dependency-version: 2.4.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-09-30 01:16:55 +00:00