Skip to content

feat!: migrate plugin + constructor + input modules to runtime.Typed credentials (gate 5)#2602

Merged
jakobmoellerdev merged 4 commits into
open-component-model:mainfrom
jakobmoellerdev:feat/1047-typed-credentials-gate5
May 22, 2026
Merged

feat!: migrate plugin + constructor + input modules to runtime.Typed credentials (gate 5)#2602
jakobmoellerdev merged 4 commits into
open-component-model:mainfrom
jakobmoellerdev:feat/1047-typed-credentials-gate5

Conversation

@jakobmoellerdev

Copy link
Copy Markdown
Member

Summary

Gate 5 of the typed credentials migration (#1047). Migrates plugin, constructor, and input/* modules from map[string]string to runtime.Typed credentials.

This continues the series started in gates 1-4 (blob, signing, rsa, repository, sigstore, oci, constructor published as PR #2598).

Modules changed

Module Change
bindings/go/constructor Resolver.Resolve return type map[string]stringruntime.Typed; bump credentials v0.0.11→v0.0.12
bindings/go/input/dir ProcessResource/ProcessSource credentials param map[string]stringruntime.Typed
bindings/go/input/file same
bindings/go/input/utf8 same
bindings/go/plugin All contract interfaces, registry implementations, handlers, converters, test plugins

Key design decisions

  • Client side (toCredentials): nil credentials → sends "{}" JSON to preserve valid Authorization header format
  • Server side (handlers): deserialize Authorization header into &runtime.Raw{} since concrete type is unknown at HTTP boundary
  • plugin/go.mod: uses replace directive pointing to local ../constructor (gate 5 constructor not yet released as module tag)

Related issues

Test plan

  • go build ./... passes in all 5 affected modules
  • go test ./... passes in constructor, input/dir, input/file, input/utf8
  • go test ./... passes in plugin (96 files changed, all registry/handler/flow tests pass)
  • Integration tests with downstream modules (gates 6-8 not yet migrated)

@jakobmoellerdev jakobmoellerdev requested a review from a team as a code owner May 21, 2026 16:28
@netlify

netlify Bot commented May 21, 2026

Copy link
Copy Markdown

👷 Deploy Preview for ocm-website processing.

Name Link
🔨 Latest commit 354aa4e
🔍 Latest deploy log https://app.netlify.com/projects/ocm-website/deploys/6a0fe831babfe00009025b50

@coderabbitai

coderabbitai Bot commented May 21, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: c04ceca0-95f9-4e41-b58c-700dd0531ca6

📥 Commits

Reviewing files that changed from the base of the PR and between b361011 and 354aa4e.

⛔ Files ignored due to path filters (4)
  • bindings/go/input/dir/go.sum is excluded by !**/*.sum
  • bindings/go/input/file/go.sum is excluded by !**/*.sum
  • bindings/go/input/utf8/go.sum is excluded by !**/*.sum
  • bindings/go/plugin/go.sum is excluded by !**/*.sum
📒 Files selected for processing (88)
  • bindings/go/input/dir/go.mod
  • bindings/go/input/dir/method.go
  • bindings/go/input/file/go.mod
  • bindings/go/input/file/method.go
  • bindings/go/input/utf8/go.mod
  • bindings/go/input/utf8/method.go
  • bindings/go/plugin/go.mod
  • bindings/go/plugin/internal/testplugin-blobtransformer/main.go
  • bindings/go/plugin/internal/testplugin-component-lister/main.go
  • bindings/go/plugin/internal/testplugin-component-version/main.go
  • bindings/go/plugin/internal/testplugin-digester/main.go
  • bindings/go/plugin/internal/testplugin-input/main.go
  • bindings/go/plugin/internal/testplugin-resource/main.go
  • bindings/go/plugin/internal/testplugin-signinghandler/main.go
  • bindings/go/plugin/manager/contracts/blobtransformer/v1/contracts.go
  • bindings/go/plugin/manager/contracts/componentlister/v1/contract.go
  • bindings/go/plugin/manager/contracts/credentials/v1/contracts.go
  • bindings/go/plugin/manager/contracts/digestprocessor/v1/contract.go
  • bindings/go/plugin/manager/contracts/input/v1/contract.go
  • bindings/go/plugin/manager/contracts/ocmrepository/v1/contracts.go
  • bindings/go/plugin/manager/contracts/resource/v1/contracts.go
  • bindings/go/plugin/manager/contracts/signing/v1/contracts.go
  • bindings/go/plugin/manager/registries/blobtransformer/contract.go
  • bindings/go/plugin/manager/registries/blobtransformer/converter.go
  • bindings/go/plugin/manager/registries/blobtransformer/endpoints_function_test.go
  • bindings/go/plugin/manager/registries/blobtransformer/handlers.go
  • bindings/go/plugin/manager/registries/blobtransformer/handlers_test.go
  • bindings/go/plugin/manager/registries/blobtransformer/implementations.go
  • bindings/go/plugin/manager/registries/blobtransformer/implementations_test.go
  • bindings/go/plugin/manager/registries/blobtransformer/registry_test.go
  • bindings/go/plugin/manager/registries/componentlister/contract.go
  • bindings/go/plugin/manager/registries/componentlister/converter.go
  • bindings/go/plugin/manager/registries/componentlister/converter_test.go
  • bindings/go/plugin/manager/registries/componentlister/endpoints_function_test.go
  • bindings/go/plugin/manager/registries/componentlister/handlers.go
  • bindings/go/plugin/manager/registries/componentlister/handlers_test.go
  • bindings/go/plugin/manager/registries/componentlister/implementations.go
  • bindings/go/plugin/manager/registries/componentlister/implementations_test.go
  • bindings/go/plugin/manager/registries/componentlister/registry.go
  • bindings/go/plugin/manager/registries/componentlister/registry_test.go
  • bindings/go/plugin/manager/registries/componentversionrepository/converter.go
  • bindings/go/plugin/manager/registries/componentversionrepository/endpoints_function_test.go
  • bindings/go/plugin/manager/registries/componentversionrepository/handlers.go
  • bindings/go/plugin/manager/registries/componentversionrepository/handlers_test.go
  • bindings/go/plugin/manager/registries/componentversionrepository/implementations.go
  • bindings/go/plugin/manager/registries/componentversionrepository/implementations_test.go
  • bindings/go/plugin/manager/registries/componentversionrepository/registry.go
  • bindings/go/plugin/manager/registries/componentversionrepository/registry_test.go
  • bindings/go/plugin/manager/registries/componentversionrepository/typed_conversion.go
  • bindings/go/plugin/manager/registries/credentialplugin/registry_test.go
  • bindings/go/plugin/manager/registries/credentialrepository/converter.go
  • bindings/go/plugin/manager/registries/credentialrepository/converter_test.go
  • bindings/go/plugin/manager/registries/credentialrepository/endpoints_function_test.go
  • bindings/go/plugin/manager/registries/credentialrepository/handlers.go
  • bindings/go/plugin/manager/registries/credentialrepository/handlers_test.go
  • bindings/go/plugin/manager/registries/credentialrepository/implementations.go
  • bindings/go/plugin/manager/registries/credentialrepository/implementations_test.go
  • bindings/go/plugin/manager/registries/credentialrepository/typed_conversion.go
  • bindings/go/plugin/manager/registries/digestprocessor/endpoints_function_test.go
  • bindings/go/plugin/manager/registries/digestprocessor/handlers.go
  • bindings/go/plugin/manager/registries/digestprocessor/handlers_test.go
  • bindings/go/plugin/manager/registries/digestprocessor/implementations.go
  • bindings/go/plugin/manager/registries/digestprocessor/implementations_test.go
  • bindings/go/plugin/manager/registries/digestprocessor/registry_test.go
  • bindings/go/plugin/manager/registries/digestprocessor/resource_digest_processor_converter.go
  • bindings/go/plugin/manager/registries/input/endpoints_function_test.go
  • bindings/go/plugin/manager/registries/input/handlers.go
  • bindings/go/plugin/manager/registries/input/handlers_test.go
  • bindings/go/plugin/manager/registries/input/implementations.go
  • bindings/go/plugin/manager/registries/input/implementations_test.go
  • bindings/go/plugin/manager/registries/input/registry_test.go
  • bindings/go/plugin/manager/registries/input/resource_input_converter.go
  • bindings/go/plugin/manager/registries/input/source_input_converter.go
  • bindings/go/plugin/manager/registries/resource/contract.go
  • bindings/go/plugin/manager/registries/resource/endpoints_function.go
  • bindings/go/plugin/manager/registries/resource/endpoints_function_test.go
  • bindings/go/plugin/manager/registries/resource/implementations.go
  • bindings/go/plugin/manager/registries/resource/implementations_test.go
  • bindings/go/plugin/manager/registries/resource/registry.go
  • bindings/go/plugin/manager/registries/resource/registry_test.go
  • bindings/go/plugin/manager/registries/resource/resource_converter.go
  • bindings/go/plugin/manager/registries/signinghandler/converter.go
  • bindings/go/plugin/manager/registries/signinghandler/endpoints_function.go
  • bindings/go/plugin/manager/registries/signinghandler/endpoints_function_test.go
  • bindings/go/plugin/manager/registries/signinghandler/handlers_test.go
  • bindings/go/plugin/manager/registries/signinghandler/implementations.go
  • bindings/go/plugin/manager/registries/signinghandler/implementations_test.go
  • bindings/go/plugin/manager/registries/signinghandler/registry_test.go

📝 Walkthrough

Walkthrough

Migrates all plugin contracts and implementations to use runtime.Typed credentials. HTTP handlers parse Authorization into runtime.Raw, implementations marshal typed credentials to headers, converters/registries forward typed creds, and tests/internal plugins are updated. Minor go.mod bumps align dependencies.

Changes

Typed credentials end-to-end migration

Layer / File(s) Summary
Core contracts updated to runtime.Typed credentials
bindings/go/plugin/manager/contracts/*, bindings/go/plugin/manager/registries/*/contract.go
All public interfaces change credential parameters/returns from map[string]string to runtime.Typed.
BlobTransformer registry, handlers, adapters, tests
.../blobtransformer/*
Handlers decode Authorization to runtime.Raw; converter/impl forward runtime.Typed; tests/mocks updated.
ComponentLister registry flow and tests
.../componentlister/*
Converters, handlers, impls, registry updated to runtime.Typed with nil→{} header; tests adjusted.
ComponentVersionRepository converters, handlers, impls, registry, typed bridge, tests
.../componentversionrepository/*
All endpoints accept runtime.Typed; handlers parse Authorization; converters/impls marshal headers; typed bridge forwards; tests updated.
CredentialRepository converters, handlers, impls, typed bridge, tests
.../credentialrepository/*, .../credentialplugin/registry_test.go
Resolve now takes/returns runtime.Typed; handler parses Authorization; impl builds headers; tests/mocks updated.
DigestProcessor handlers, impls, converters, tests
.../digestprocessor/*
Credentials are runtime.Typed; handlers parse Authorization; impl converts to headers; tests updated.
Input registries handlers, impls, converters, tests
.../input/*
ProcessResource/Source accept runtime.Typed; handlers parse Authorization; converters/impls marshal headers; tests updated.
Resource registry endpoints, impls, converters, registry, tests
.../resource/*
Upload/Download use runtime.Typed; endpoints parse Authorization; impls marshal headers; tests updated.
Signing handler converters, endpoints, impls, tests
.../signinghandler/*
Sign/Verify accept runtime.Typed; endpoints parse Authorization; impls marshal headers; tests adapted.
Internal test plugins switched to runtime.Typed
bindings/go/plugin/internal/testplugin-*/*
All internal plugin methods accept runtime.Typed credentials; behavior unchanged.
Go input bindings (dir/file/utf8) method signatures
bindings/go/input/*/method.go
InputMethod signatures updated to runtime.Typed; processing logic unchanged.
go.mod dependency updates
bindings/go/*/go.mod, bindings/go/plugin/go.mod
Bump constructor/credentials and plugin deps; prune some indirect deps.

Sequence Diagram(s)

sequenceDiagram
  participant Client
  participant Handler as HTTP Handler (rgba(66, 135, 245, 0.5))
  participant Impl as RepositoryPlugin (rgba(60, 179, 113, 0.5))
  participant External as External Plugin (rgba(255, 165, 0, 0.5))

  Client->>Handler: Request + Authorization JSON
  Handler->>Handler: Unmarshal to runtime.Raw
  Handler->>Impl: Process(..., credentials runtime.Typed)
  Impl->>Impl: Marshal credentials to Authorization header
  Impl->>External: Call endpoint
  External-->>Impl: Response
  Impl-->>Handler: Result
  Handler-->>Client: HTTP 200
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

Suggested reviewers

  • morri-son
  • fabianburth

Poem

In burrows of code where plugins reside,
A rabbit signs blobs with typed creds at its side.
Maps hop away; Raw hops in—how refined!
Headers go “{}” when keys are declined.
Thump-thump—tests pass!
Ears up—at last!
Carrots for contracts, neatly aligned. 🥕

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

@github-actions github-actions Bot added !BREAKING-CHANGE! Breaking change in API or ocm-cli or spec kind/feature new feature, enhancement, improvement, extension size/l Large labels May 21, 2026
…credentials (gate 5)

Part of issue open-component-model#1047 typed credentials migration series.

Changes:
- constructor: update Resolver interface usage from ResolveTyped → Resolve (credentials v0.0.12),
  bump credentials to v0.0.12, repository to v0.0.9
- input/dir, input/file, input/utf8: ProcessResource/ProcessSource credentials map[string]string → runtime.Typed
- plugin: all contract interfaces credentials map[string]string → runtime.Typed
  - contracts: blobtransformer, componentlister, credentials, digestprocessor, input,
    ocmrepository, resource, signing
  - registry implementations: toCredentials(runtime.Typed), nil → sends "{}"
  - registry handlers: credentials deserialized via &runtime.Raw{} server-side
  - converters: all credential params updated
  - test plugins: all credential params updated
  - test files: map[string]string{} → nil, mock methods updated to runtime.Typed
- plugin/go.mod: replace constructor with local (unreleased gate 5 version)

Closes: part of open-component-model#1047
On-behalf-of: @SAP <jakob.moeller@sap.com>
Signed-off-by: Jakob Möller <contact@jakob-moeller.com>
On-behalf-of: @SAP <jakob.moeller@sap.com>
@jakobmoellerdev jakobmoellerdev force-pushed the feat/1047-typed-credentials-gate5 branch from 73eec77 to f510ff5 Compare May 21, 2026 16:33
jakobmoellerdev added a commit that referenced this pull request May 21, 2026
…als v0.0.12 compat) (#2603)

## Summary

- `credentials v0.0.12` unified the `Resolver` interface to a single
`Resolve(ctx, identity) (runtime.Typed, error)` method, removing the
separate `ResolveTyped` method that existed in v0.0.11
- `constructor v0.0.8` (released as part of gate 4, PR #2598) still
calls `provider.ResolveTyped` and depends on `credentials v0.0.11`
- This causes a build failure when any module depends on both
`constructor v0.0.8` and `credentials v0.0.12`

This fix updates `construct.go` to call `provider.Resolve` and bumps the
credentials dependency to `v0.0.12`.

## Dependency on
Must be released as `constructor/v0.0.9` before PR #2602 (gate 5 plugin
migration) can drop its `replace` directive.

Signed-off-by: Jakob Möller <contact@jakob-moeller.com>
jakobmoellerdev and others added 2 commits May 21, 2026 18:42
Signed-off-by: Jakob Möller <contact@jakob-moeller.com>
On-behalf-of: @SAP <jakob.moeller@sap.com>
@jakobmoellerdev jakobmoellerdev enabled auto-merge (squash) May 22, 2026 05:22
@jakobmoellerdev jakobmoellerdev merged commit 27c822c into open-component-model:main May 22, 2026
24 of 25 checks passed
jakobmoellerdev added a commit to jakobmoellerdev/open-component-model that referenced this pull request May 22, 2026
Gate 5 (open-component-model#2602) migrated credential parameters to runtime.Typed but left
inline JSON parsing in every registry handler. Extract the repeated
Authorization header → runtime.Raw parsing into a shared helper and
update all handlers to use it.

- Add plugins/credentials.go: CredentialsFromHeader reads the
  Authorization header and unmarshals it into runtime.Typed, writing
  an HTTP 401 on malformed input
- Update all registry handlers (blobtransformer, componentlister,
  credentialrepository, digestprocessor, input, resource) to use it
- plugins/call.go: skip headers with empty key

Refs: open-component-model#1047
On-behalf-of: @SAP <jakob.moeller@sap.com>
jakobmoellerdev added a commit to jakobmoellerdev/open-component-model that referenced this pull request May 22, 2026
Gate 5 (open-component-model#2602) migrated credential parameters to runtime.Typed but left
inline JSON parsing in every registry handler. Extract the repeated
Authorization header → runtime.Raw parsing into a shared helper and
update all handlers to use it.

- Add plugins/credentials.go: CredentialsFromHeader reads the
  Authorization header and unmarshals it into runtime.Typed, writing
  an HTTP 401 on malformed input
- Update all registry handlers (blobtransformer, componentlister,
  credentialrepository, digestprocessor, input, resource) to use it
- plugins/call.go: skip headers with empty key

Refs: open-component-model#1047
On-behalf-of: @SAP <jakob.moeller@sap.com>
Signed-off-by: Jakob Möller <contact@jakob-moeller.com>
On-behalf-of: @SAP <jakob.moeller@sap.com>
jakobmoellerdev added a commit to jakobmoellerdev/open-component-model that referenced this pull request May 22, 2026
Gate 5 (open-component-model#2602) migrated credential parameters to runtime.Typed but left
inline JSON parsing in every registry handler. Extract the repeated
Authorization header → runtime.Raw parsing into a shared helper and
update all handlers to use it.

- Add plugins/credentials.go: CredentialsFromHeader reads the
  Authorization header and unmarshals it into runtime.Typed, writing
  an HTTP 401 on malformed input
- Update all registry handlers (blobtransformer, componentlister,
  credentialrepository, digestprocessor, input, resource) to use it
- plugins/call.go: skip headers with empty key

Refs: open-component-model#1047
On-behalf-of: @SAP <jakob.moeller@sap.com>
Signed-off-by: Jakob Möller <contact@jakob-moeller.com>
On-behalf-of: @SAP <jakob.moeller@sap.com>
jakobmoellerdev added a commit to jakobmoellerdev/open-component-model that referenced this pull request May 22, 2026
Gate 5 (open-component-model#2602) migrated credential parameters to runtime.Typed but left
inline JSON parsing in every registry handler. Extract the repeated
Authorization header → runtime.Raw parsing into a shared helper and
update all handlers to use it.

- Add plugins/credentials.go: CredentialsFromHeader reads the
  Authorization header and unmarshals it into runtime.Typed, writing
  an HTTP 401 on malformed input
- Update all registry handlers (blobtransformer, componentlister,
  credentialrepository, digestprocessor, input, resource) to use it
- plugins/call.go: skip headers with empty key

Refs: open-component-model#1047
On-behalf-of: @SAP <jakob.moeller@sap.com>
Signed-off-by: Jakob Möller <contact@jakob-moeller.com>
On-behalf-of: @SAP <jakob.moeller@sap.com>
jakobmoellerdev added a commit that referenced this pull request May 22, 2026
)

## Summary

Gate 6 of the phased [ADR 0018 / issue
#1047](open-component-model/ocm-project#1047)
credentials migration. Builds on gates 1–5 (PRs #2580, #2586, #2594,
#2598, #2602).

> **Note:** this branch also contains #2613 (plugin
`CredentialsFromHeader` refactor). Once that merges, this PR will show
only the helm changes.

### helm binding changes

- `cmd/main.go`, `input/method.go`: `ProcessResource`/`ProcessSource` →
`runtime.Typed`
- `digest/digest.go`: `ProcessResourceDigest` → `runtime.Typed`; single
`ConvertCredentials` call replaces two separate conversions
- `repository/resource/resource_repository.go`:
`DownloadResource`/`UploadResource` → `runtime.Typed`; `var _
repository.ResourceRepository` assertion restored
- `transformation/get_helm_chart.go`: use upstream typed
`ResourceRepository` interface; delete `transformation/credentials.go`
- `spec/credentials/v1/convert.go`: new
`ConvertCredentials(runtime.Typed) (*HelmHTTPCredentials,
*OCICredentials, error)` — single scheme-based conversion returning both
types
- `spec/credentials/scheme.go`: package-level `Scheme` for helm
credentials
- `spec/credentials/v1/helm_credentials.go`: remove deprecated exported
constants and `FromDirectCredentials` (now private)
- `go.mod`: `plugin` → v0.0.16, `blob` → v0.0.13, `repository` → v0.0.9;
no replace directives

## Test plan

- [ ] `cd bindings/go/helm && go build ./... && go test ./...` (cmd/*
requires `task build` for plugin binary)
- [ ] `grep -rn "map\[string\]string" bindings/go/helm/` returns no
credential parameter usages

Refs: #1047

Signed-off-by: Jakob Möller <contact@jakob-moeller.com>
jakobmoellerdev added a commit that referenced this pull request May 22, 2026
## Summary

Gate 5 (#2602) migrated all credential parameters to `runtime.Typed` but
left the Authorization header → `runtime.Raw` parsing duplicated inline
in every registry handler. This PR extracts that into a shared helper.

- Add `plugins/credentials.go`: `CredentialsFromHeader` reads the
`Authorization` header, unmarshals it into `runtime.Typed`, and writes
HTTP 401 on malformed input
- Update all registry handlers to use it: `blobtransformer`,
`componentlister`, `credentialrepository`, `digestprocessor`, `input`,
`resource`
- `plugins/call.go`: skip headers with empty key

No behaviour change — pure extraction of duplicated code.

## Test plan

- [ ] `cd bindings/go/plugin && go build ./... && go test ./...`

Signed-off-by: Jakob Möller <contact@jakob-moeller.com>
jakobmoellerdev added a commit that referenced this pull request May 26, 2026
…entials (gate 7) (#2616)

#### What this PR does / why we need it

Gate 7 of the typed credentials migration (ocm-project#1047).

Migrates `bindings/go/transfer` and `kubernetes/controller` to use
`runtime.Typed` credentials instead of `map[string]string`.

**bindings/go/transfer:**
- Bump `blob→v0.0.13`, `credentials→v0.0.12`, `oci→v0.0.43`,
`repository→v0.0.9`
- Update OCI identity import path: `oci/spec/credentials/identity/v1` →
`oci/spec/identity/v1`

**kubernetes/controller:**
- `resolveResourceCredentials` and `VerifyResource` return
`runtime.Typed` instead of `map[string]string`
- Replace `map[string]string` RSA credential literals with
`rsacredentialsv1.RSACredentials` structs
- Update import aliases for `oci/spec/credentials` and
`oci/spec/identity/v1`
- `GetComponentVersionRepository` call sites updated to pass
`runtime.Typed` credentials

#### Which issue(s) this PR fixes

Contributes:
- open-component-model/ocm-project#1047
- open-component-model/ocm-project#1055
- open-component-model/ocm-project#1056
- open-component-model/ocm-project#1057

#### Binding release order

| Gate | PRs | Modules | Status |
|------|-----|---------|--------|
| 1 | ✅ #2580 | blob, signing, rsa | merged |
| 2 | ✅ #2586 | repository, sigstore | merged |
| 3 | ✅ #2594 | oci | merged |
| 4 | ✅ #2598 | constructor | merged |
| 5 | ✅ #2602 | plugin, input/dir, input/file, input/utf8 | merged |
| 6 | ✅ #2612 | helm | merged |
| 7 | **this PR** | transfer, controller | 👈 |
| 8 | PR 8 | cli | — |

---------

Signed-off-by: Jakob Möller <contact@jakob-moeller.com>
Signed-off-by: Matthias Bruns <git@matthiasbruns.com>
Co-authored-by: Matthias Bruns <git@matthiasbruns.com>
@matthiasbruns matthiasbruns mentioned this pull request May 26, 2026
5 tasks
matthiasbruns added a commit that referenced this pull request May 26, 2026
On-behalf-of: SAP <matthias.bruns@sap.com>

<!-- markdownlint-disable MD041 -->
#### What this PR does / why we need it
Final PR of the breaking change chain for the credential migration.
This PR updated the CLI.

#### Which issue(s) this PR fixes
Fixed: open-component-model/ocm-project#1056

| Gate | PRs | Modules | Status |
|------|-----|---------|--------|
| 1 | ✅ #2580 | blob, signing, rsa | merged |
| 2 | ✅ #2586 | repository, sigstore | merged |
| 3 | ✅ #2594 | oci | merged |
| 4 | ✅ #2598 | constructor | merged |
| 5 | ✅ #2602 | plugin, input/dir, input/file, input/utf8 | merged |
| 6 | ✅ #2612 | helm | merged |
| 7 | ✅  #2616 | transfer, controller | merged |
| 8 | **this PR** | cli | 👈 |

#### Testing

##### How to test the changes

##### Verification

- [ ] I have added/updated tests for my changes (see [Test
Requirements](../CONTRIBUTING.md#test-requirements))
- [x] Tests pass locally (`task test` and `task test/integration` if
applicable)
- [ ] If touching multiple modules, `go work` is enabled (see `go.work`)
- [x] My changes do not decrease test coverage
- [ ] I have tested the changes locally by running `ocm`

---------

Signed-off-by: Matthias Bruns <git@matthiasbruns.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

!BREAKING-CHANGE! Breaking change in API or ocm-cli or spec kind/feature new feature, enhancement, improvement, extension size/l Large

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants