Skip to content

Conversation

@ericcurtin
Copy link
Contributor

This commit removes the vendored go-containerregistry package and replaces it with containerd and moby packages for OCI registry operations.

Copy link
Contributor

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

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

Sorry, we are unable to review this pull request

The GitHub API does not allow us to fetch diffs exceeding 300 files, and this pull request has 541

@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @ericcurtin, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request represents a significant architectural shift, replacing the legacy go-containerregistry library with a custom OCI implementation built upon containerd and moby components. The primary goal is to modernize OCI registry interactions, improve performance, and reduce external dependencies. This change introduces a new set of OCI-specific packages and updates all relevant parts of the codebase to align with this new foundation, leading to a more robust and streamlined distribution system.

Highlights

  • Core Library Replacement: The vendored go-containerregistry library has been entirely replaced with new, native OCI implementations that leverage containerd and moby packages for all registry operations. This is a foundational change affecting how OCI images are handled throughout the codebase.
  • New OCI Sub-Packages: New pkg/distribution/oci sub-packages have been introduced, providing dedicated implementations for OCI authentication, reference parsing, remote registry interactions, and core OCI types such as hash, image, layer, manifest, and progress updates. This modular approach enhances clarity and maintainability.
  • Dependency Cleanup: The go.mod and go.sum files have undergone significant cleanup, removing the old go-containerregistry module and its numerous transitive dependencies. This results in a leaner and more focused dependency graph, reducing potential conflicts and build times.
  • Enhanced Registry Interaction: Registry interaction logic has been refined, including the addition of an explicit plainHTTP option for connecting to registries and more robust error handling during pull operations, accommodating varied responses from different resolver implementations.
  • Codebase Migration: Existing code across CLI commands, builders, internal store logic, and tarball handling has been migrated to utilize the new pkg/distribution/oci types and functions, ensuring consistency and full adoption of the new OCI layer.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@ericcurtin ericcurtin force-pushed the rm-gocontainers-registry branch from 271bf72 to f146e36 Compare December 27, 2025 23:35
Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request is a large refactoring that replaces the vendored go-containerregistry package with containerd and moby packages for OCI registry operations. This involves removing the old dependency and its usage throughout the codebase, and introducing a new pkg/distribution/oci package that provides similar functionality, likely wrapping the new dependencies. The changes are extensive, touching many files from command-line tools to internal distribution logic and tests.

My feedback focuses on a couple of potential regressions in functionality that might have been introduced during this refactoring. Specifically, the removal of download resumption logic and a change in error handling that might affect API consumers. Otherwise, the refactoring appears to be thorough, with tests updated to reflect changes in behavior like tag normalization.

@ericcurtin ericcurtin force-pushed the rm-gocontainers-registry branch 7 times, most recently from 267777b to 2db807c Compare December 28, 2025 01:23
This commit removes the vendored go-containerregistry package and replaces
it with containerd and moby packages for OCI registry operations.

Signed-off-by: Eric Curtin <eric.curtin@docker.com>
@ericcurtin ericcurtin force-pushed the rm-gocontainers-registry branch from 2db807c to 30b47cf Compare December 28, 2025 01:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants