Skip to content

feat(proxy): add support for oci manifest images#628

Open
thijmv wants to merge 1 commit into
masterfrom
thijmv/oci-manifest-support
Open

feat(proxy): add support for oci manifest images#628
thijmv wants to merge 1 commit into
masterfrom
thijmv/oci-manifest-support

Conversation

@thijmv
Copy link
Copy Markdown
Collaborator

@thijmv thijmv commented May 29, 2026

This PR (1/3) adds OCI manifest support to Kraken. OCI manifests are the modern Docker standard and enable layer compression with additional algorithms (e.g. zstd), which may improve transfer and decompression times.

This PR makes the following changes:

  • OCI parsing
    • Add parsing support for OCI manifests.
    • Peek at the media type of manifests, rather than trying each possible format.
  • Prefetching
    • Fix dependency resolution for prefetching, which excluded (sub-)manifest and config blobs.
    • Return an error when sub-manifest blobs cannot be downloaded, instead of silently continuing with a partial dependency list.

Fixes #574.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds OCI image manifest/index support across Kraken’s Docker manifest parsing, proxy prefetch/preheat paths, puller utility, fixtures, and CI coverage.

Changes:

  • Extends manifest parsing to support Docker v2 manifests/lists and OCI manifests/indexes through a shared dockerutil.ParseManifest.
  • Updates proxy prefetch/preheat and puller behavior to consume OCI manifests and include manifest/config blobs where applicable.
  • Adds OCI fixtures/tests and runs integration tests with containerd snapshotter enabled and disabled.

Reviewed changes

Copilot reviewed 8 out of 9 changed files in this pull request and generated no comments.

Show a summary per file
File Description
utils/dockerutil/dockerutil.go Adds OCI-aware manifest parsing and supported Accept media types.
utils/dockerutil/dockerutil_test.go Covers Docker and OCI manifest parsing cases.
utils/dockerutil/fixtures.go Adds OCI manifest and index test fixtures.
proxy/proxyserver/prefetch.go Uses shared parser and descends manifest lists/indexes for blob collection.
proxy/proxyserver/preheat.go Allows OCI image manifest push notifications.
proxy/proxyserver/server_test.go Updates and adds prefetch tests for manifest lists and OCI indexes.
tools/bin/puller/pull.go Uses shared parser and requests OCI single-arch manifests.
.github/workflows/build-and-test.yaml Adds integration matrix for Docker and OCI/containerd snapshotter modes.
test/python/conftest.py Removes stale OCI-support TODO comment.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@thijmv thijmv force-pushed the thijmv/oci-manifest-support branch from 5c3f555 to af0fca7 Compare June 1, 2026 11:31
@thijmv thijmv marked this pull request as ready for review June 1, 2026 12:30
@thijmv thijmv force-pushed the thijmv/oci-manifest-support branch from af0fca7 to ac8edc6 Compare June 1, 2026 14:23
@github-actions github-actions Bot added the size/l label Jun 1, 2026
@thijmv thijmv removed the size/xl label Jun 1, 2026
Comment thread utils/dockerutil/dockerutil.go
Comment thread utils/dockerutil/fixtures.go
Comment thread utils/dockerutil/dockerutil_test.go
Comment thread utils/dockerutil/dockerutil_test.go
Comment thread proxy/proxyserver/prefetch.go
Comment thread proxy/proxyserver/prefetch.go
@thijmv thijmv force-pushed the thijmv/oci-manifest-support branch from ac8edc6 to a6edeae Compare June 2, 2026 08:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Kraken does not support OCI manifest files

3 participants