Also add a well-formatted comment (for outputing in `docker build --call=outline .`);
docker build -q --call=outline .
BUILD ARG VALUE DESCRIPTION
GO_VERSION 1.23.7
ALPINE_VERSION 3.21
XX_VERSION 1.9.0 version of the tonistiigi/xx utility to use.
PKG github.com/distribution/distribution/v3
LDFLAGS -s -w
BUILDTAGS
full diff: https://github.com/tonistiigi/xx/compare/v1.6.1...v1.9.0
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
We were asking for it by not pinning our compose images to specific tags
and Azure team delivered: latest azure-cli broke our azure store e2e
tests.
This pins the images to specific tags and adds --wait flag for waiting
the compose to fully start.
Signed-off-by: Milos Gajdos <milosthegajdos@gmail.com>
Since version 3.0.0, the response completed log line is no longer
present for HEAD requests to manifests that return 200.
The regression is caused by the implicit handling of manifest HEAD
responses that bypass the logging middleware when returning from
`GetManifest`.
This change ensures that the logging middleware handles responses for
manifest HEAD requests by explicitly writing `StatusOK` into the
response header before returning from `GetManifest`.
Closes: https://github.com/distribution/distribution/issues/4733
Signed-off-by: Thomas Cuthbert <tom.cuthbert@elastic.co>
The newIgnoredSink function had a bug where it would return the
unfiltered sink when the mediatypes list was empty, even if
ignoreActions was populated. This made it impossible to filter
events by action alone.
This fix changes the early return condition to check both parameters:
- Only returns unfiltered sink when BOTH are empty
- Allows filtering by actions alone
- Allows filtering by mediatypes alone
- Maintains existing OR logic when both are specified
Added test cases specifically for the edge case of empty mediatypes
with populated actions list.
Updated documentation to clarify how the filtering works and that
the two parameters work independently.
Fixes: #4729
Signed-off-by: Adrian Callejas <acallejaszu@gmail.com>
The log message "Challenge established with upstream" was using
an incorrect format specifier (%s) when logging the challenge structs,
causing garbled output. This commit updates the format specifier to %+v
and removes the unnecessary challenge manager log. URLs are now
Redacted() to prevent leaking credentials.
Fixes: #4697
Co-authored-by: Sebastiaan van Stijn <thaJeztah@users.noreply.github.com>
Signed-off-by: Sumedh Vats <sumedhvats2004@gmail.com>
The `TestGracefulShutdown` test was failing intermittently, especially
with stricter HTTP handling in newer Go versions (e.g., 1.25). This was
caused by sending an incomplete HTTP request in two separate writes,
creating a race condition where the server could shut down before
receiving the full request.
This commit fixes the test's flakiness by sending a single, complete,
and valid HTTP/1.1 request before triggering the shutdown. This ensures
the test accurately verifies the intended behavior: that a valid,
in-flight request is fully processed while new connections are rejected.
Fixes:#4696
Signed-off-by: Sumedh Vats <sumedhvats2004@gmail.com>
The manifest Exists() client call issued a HEAD without any Accept
headers. Some OCI-focused registries require an explicit Accept for
manifest content negotiation, causing HEAD to fail (404/406) even
when the manifest exists. The Get() path already sets Accept;
Exists() did not.
This change adds all supported manifest media types from
distribution.ManifestMediaTypes() as Accept headers to the Exists()
HEAD request, aligning behavior with Get() and improving OCI
interoperability.
Tests:
- Regression: Exists() returns true when Accept is present and
false when stripped (negative path), mirroring real-world
behavior.
Risk/compatibility:
- Low. Registries that ignore Accept on HEAD continue to work.
- Redirect handling is unchanged; existing CheckRedirect preserves
Accept.
Signed-off-by: Artem Tkachuk <artemtkachuk@yahoo.com>