Skip to content

feat: add ORAS as a builtin plugin#409

Open
ianpittwood wants to merge 12 commits intomainfrom
feature/oras-plugin
Open

feat: add ORAS as a builtin plugin#409
ianpittwood wants to merge 12 commits intomainfrom
feature/oras-plugin

Conversation

@ianpittwood
Copy link
Copy Markdown
Contributor

Summary

  • Refactors the ORAS module from posit_bakery/image/oras/ into a builtin plugin at posit_bakery/plugins/builtin/oras/, following the dgoss plugin pattern
  • Adds new bakery oras merge CLI command for merging multi-platform images from build metadata files
  • Refactors bakery ci merge to delegate to the oras plugin via get_plugin("oras").execute() instead of the now-removed config.merge_targets()
  • Registers the oras plugin entry point in pyproject.toml
  • Moves and updates all ORAS tests to the new plugin location

Test plan

  • just test passes (excluding slow/integration tests)
  • bakery oras --help shows the oras command group
  • bakery oras merge --help shows merge subcommand with metadata_file, --context, --temp-registry, --dry-run options
  • No remaining references to posit_bakery.image.oras or merge_targets in codebase
  • CI merge BDD tests pass with updated plugin patching

🤖 Generated with Claude Code

@ianpittwood ianpittwood requested a review from bschwedler as a code owner March 31, 2026 20:00
@github-actions
Copy link
Copy Markdown

github-actions bot commented Mar 31, 2026

Test Results

1 264 tests   1 264 ✅  7m 44s ⏱️
    1 suites      0 💤
    1 files        0 ❌

Results for commit b30a1ba.

♻️ This comment has been updated with latest results.

@ianpittwood ianpittwood marked this pull request as draft March 31, 2026 20:26
Base automatically changed from feature/plugin-protocol to main April 2, 2026 18:15
@ianpittwood ianpittwood force-pushed the feature/oras-plugin branch from d78be36 to 5f564a1 Compare April 3, 2026 16:21
ianpittwood and others added 12 commits April 3, 2026 10:26
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Implements OrasPlugin as a BakeryToolPlugin wrapping OrasMergeWorkflow.
Also fixes stale import in config.py left by Task 1's module relocation.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Implements register_cli() in OrasPlugin to expose a `bakery oras merge`
subcommand that reads build metadata files and merges multi-platform images.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…e signature

Plugin-specific parameters (platform for dgoss, dry_run for oras) are now
keyword-only args on each concrete implementation rather than on the shared
protocol. The protocol execute() signature only defines common args (base_path,
targets) plus **kwargs for plugin-specific options.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Surfaces the display_results method on the BakeryToolPlugin protocol as
results(), providing a consistent interface for plugins to report their
execution outcomes.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@ianpittwood ianpittwood force-pushed the feature/oras-plugin branch from 5f564a1 to b30a1ba Compare April 3, 2026 16:26
@ianpittwood ianpittwood marked this pull request as ready for review April 3, 2026 16:29
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.

1 participant