Skip to content

feat!: migrate transfer and controller bindings to runtime.Typed credentials (gate 7)#2616

Merged
jakobmoellerdev merged 18 commits into
open-component-model:mainfrom
jakobmoellerdev:feat/1047-typed-credentials-gate7
May 26, 2026
Merged

feat!: migrate transfer and controller bindings to runtime.Typed credentials (gate 7)#2616
jakobmoellerdev merged 18 commits into
open-component-model:mainfrom
jakobmoellerdev:feat/1047-typed-credentials-gate7

Conversation

@jakobmoellerdev

Copy link
Copy Markdown
Member

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/v1oci/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:

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

@netlify

netlify Bot commented May 22, 2026

Copy link
Copy Markdown

Deploy Preview for ocm-website ready!

Name Link
🔨 Latest commit ec247bc
🔍 Latest deploy log https://app.netlify.com/projects/ocm-website/deploys/6a158bf2aefbaf0008579029
😎 Deploy Preview https://deploy-preview-2616--ocm-website.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

@coderabbitai

coderabbitai Bot commented May 22, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Warning

Review limit reached

@matthiasbruns, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 51 minutes and 45 seconds. Learn how PR review limits work.

Your organization has run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: bcbbe8bc-bf33-4b16-9eab-e5cae08343d4

📥 Commits

Reviewing files that changed from the base of the PR and between 554fae1 and ec247bc.

⛔ Files ignored due to path filters (3)
  • bindings/go/transfer/go.sum is excluded by !**/*.sum
  • bindings/go/transfer/integration/go.sum is excluded by !**/*.sum
  • kubernetes/controller/go.sum is excluded by !**/*.sum
📒 Files selected for processing (18)
  • bindings/go/transfer/go.mod
  • bindings/go/transfer/integration/go.mod
  • bindings/go/transfer/integration/integration_test.go
  • kubernetes/controller/cmd/main.go
  • kubernetes/controller/go.mod
  • kubernetes/controller/internal/controller/component/component_controller_test.go
  • kubernetes/controller/internal/controller/component/suite_test.go
  • kubernetes/controller/internal/controller/deployer/deployer_controller.go
  • kubernetes/controller/internal/controller/deployer/deployer_controller_test.go
  • kubernetes/controller/internal/controller/deployer/suite_test.go
  • kubernetes/controller/internal/controller/repository/repository_controller_test.go
  • kubernetes/controller/internal/controller/resource/suite_test.go
  • kubernetes/controller/internal/ocm/resource.go
  • kubernetes/controller/internal/resolution/service_test.go
  • kubernetes/controller/internal/resolution/workerpool/workerpool.go
  • kubernetes/controller/internal/setup/integration_test.go
  • kubernetes/controller/internal/test/component.go
  • kubernetes/controller/pkg/configuration/config.go
📝 Walkthrough

Walkthrough

This PR migrates credential handling from untyped map[string]string to strongly-typed ocmruntime.Typed values across the Kubernetes controller and OCM bindings. Dependencies are bumped to support the new OCI identity spec, import paths are rewritten to use the new identity package structure, and credential resolution, verification, and configuration paths are updated to work with typed credentials.

Changes

Typed Credential Spec Migration

Layer / File(s) Summary
Dependency Updates
bindings/go/transfer/go.mod, bindings/go/transfer/integration/go.mod, kubernetes/controller/go.mod
OCM binding dependencies (blob, credentials, descriptor/runtime, helm, oci, plugin, repository, rsa, signing) and indirect dependencies (jsonparser, jsonschema, ordered-map, yaml/v4, constructor) bumped to newer versions across bindings and controller modules.
OCI Identity Spec Import Migration
bindings/go/transfer/integration/integration_test.go, kubernetes/controller/cmd/main.go, kubernetes/controller/internal/controller/component/suite_test.go, kubernetes/controller/internal/controller/deployer/suite_test.go, kubernetes/controller/internal/controller/resource/suite_test.go
Import paths changed from .../oci/spec/credentials/identity/v1 to .../oci/spec/identity/v1 throughout test suites and main entry point, enabling use of new identity spec types for credential repository registration.
Typed Resource Credential Resolution
kubernetes/controller/internal/controller/deployer/deployer_controller.go, kubernetes/controller/internal/ocm/resource.go
resolveResourceCredentials return type and VerifyResource credential handling switched from map[string]string to ocmruntime.Typed; credential resolution calls updated to assign typed values directly.
Typed RSA Signature Verification
kubernetes/controller/internal/resolution/workerpool/workerpool.go
Signature verification credential construction changed from map-based payload to typed rsacredentialsv1.RSACredentials struct populated from public key PEM; imports updated to include RSA credentials v1 and runtime types.
Configuration and Test Fixture Updates
kubernetes/controller/internal/resolution/service_test.go, kubernetes/controller/internal/setup/integration_test.go, kubernetes/controller/internal/test/component.go, kubernetes/controller/pkg/configuration/config.go
Test double GetComponentVersionRepository method signatures updated to accept ocmruntime.Typed instead of map[string]string; Docker-config credential decoding migrated to use OCI credentials spec; RSA signing credentials in test component helpers changed to use typed rsacredentialsv1.RSACredentials.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Suggested reviewers

  • matthiasbruns
  • fabianburth
  • piotrjanik

🐰 A rabbit hops through with typed credentials in hand,
No more map[string]string scattered o'er the land!
With OCI spec identity, the path is now clear,
Runtime.Typed credentials bring structure here!

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 50.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly describes the main change: migrating transfer and controller bindings to use runtime.Typed credentials as part of gate 7 of a typed credentials migration.
Description check ✅ Passed The description is directly related to the changeset, explaining the migration from map[string]string to runtime.Typed credentials with specific module bumps, import path updates, and function signature changes across both bindings/go/transfer and kubernetes/controller.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

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

Warning

Review ran into problems

🔥 Problems

Git: Failed to clone repository. Please run the @coderabbitai full review command to re-trigger a full review. If the issue persists, set path_filters to include or exclude specific files.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@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/s Small size/m Medium and removed size/s Small labels May 22, 2026
@jakobmoellerdev jakobmoellerdev force-pushed the feat/1047-typed-credentials-gate7 branch from 814c491 to 554fae1 Compare May 22, 2026 12:42
@jakobmoellerdev jakobmoellerdev marked this pull request as ready for review May 22, 2026 12:45
@jakobmoellerdev jakobmoellerdev requested a review from a team as a code owner May 22, 2026 12:45

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
kubernetes/controller/internal/controller/deployer/deployer_controller.go (1)

711-740: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Treat missing resource credentials as optional here.

This helper now returns typed credentials, but it still fails on every credGraph.Resolve error. That makes the download path stricter than VerifyResource, which already ignores credentials.ErrNotFound and proceeds with nil credentials. Public resources will start failing whenever an OCM config exists but no matching credential is configured.

Proposed fix
+	"ocm.software/open-component-model/bindings/go/credentials"
 	"ocm.software/open-component-model/bindings/go/plugin/manager"
 	ocmruntime "ocm.software/open-component-model/bindings/go/runtime"
-	creds, err := credGraph.Resolve(ctx, id)
-	if err != nil {
+	creds, err := credGraph.Resolve(ctx, id)
+	if err != nil && !errors.Is(err, credentials.ErrNotFound) {
 		return nil, fmt.Errorf("failed to resolve credentials: %w", err)
 	}
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@kubernetes/controller/internal/controller/deployer/deployer_controller.go`
around lines 711 - 740, The helper should treat missing credentials as optional:
when calling resourcePlugin.GetResourceCredentialConsumerIdentity and then
credGraph.Resolve, catch and handle credentials.ErrNotFound by returning (nil,
nil) instead of propagating the error; keep other errors wrapped and returned as
before. Update the block around setup.NewCredentialGraph/credGraph.Resolve to
check for errors.Is(err, credentials.ErrNotFound) (or compare the specific
sentinel used in your credentials package) and return nil,nil for that case,
mirroring VerifyResource behavior; leave GetResourcePlugin,
GetResourceCredentialConsumerIdentity, and normal credential return paths
unchanged.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In `@kubernetes/controller/internal/controller/deployer/deployer_controller.go`:
- Around line 711-740: The helper should treat missing credentials as optional:
when calling resourcePlugin.GetResourceCredentialConsumerIdentity and then
credGraph.Resolve, catch and handle credentials.ErrNotFound by returning (nil,
nil) instead of propagating the error; keep other errors wrapped and returned as
before. Update the block around setup.NewCredentialGraph/credGraph.Resolve to
check for errors.Is(err, credentials.ErrNotFound) (or compare the specific
sentinel used in your credentials package) and return nil,nil for that case,
mirroring VerifyResource behavior; leave GetResourcePlugin,
GetResourceCredentialConsumerIdentity, and normal credential return paths
unchanged.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 5d9e2363-d627-4460-8600-7b4780c7bd9b

📥 Commits

Reviewing files that changed from the base of the PR and between 67a18b8 and 554fae1.

⛔ Files ignored due to path filters (3)
  • bindings/go/transfer/go.sum is excluded by !**/*.sum
  • bindings/go/transfer/integration/go.sum is excluded by !**/*.sum
  • kubernetes/controller/go.sum is excluded by !**/*.sum
📒 Files selected for processing (15)
  • bindings/go/transfer/go.mod
  • bindings/go/transfer/integration/go.mod
  • bindings/go/transfer/integration/integration_test.go
  • kubernetes/controller/cmd/main.go
  • kubernetes/controller/go.mod
  • kubernetes/controller/internal/controller/component/suite_test.go
  • kubernetes/controller/internal/controller/deployer/deployer_controller.go
  • kubernetes/controller/internal/controller/deployer/suite_test.go
  • kubernetes/controller/internal/controller/resource/suite_test.go
  • kubernetes/controller/internal/ocm/resource.go
  • kubernetes/controller/internal/resolution/service_test.go
  • kubernetes/controller/internal/resolution/workerpool/workerpool.go
  • kubernetes/controller/internal/setup/integration_test.go
  • kubernetes/controller/internal/test/component.go
  • kubernetes/controller/pkg/configuration/config.go

Comment thread kubernetes/controller/go.mod Outdated
Comment thread bindings/go/oci/spec/credentials/v1/convert.go Outdated
@jakobmoellerdev jakobmoellerdev force-pushed the feat/1047-typed-credentials-gate7 branch from 4ea51bd to 785027e Compare May 22, 2026 14:37
morri-son
morri-son previously approved these changes May 22, 2026
piotrjanik
piotrjanik previously approved these changes May 22, 2026

@fabianburth fabianburth left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

cannot approve this while we have replace statements in there

jakobmoellerdev and others added 10 commits May 26, 2026 12:14
…entials (gate 7)

Migrates bindings/go/transfer and kubernetes/controller to use
runtime.Typed credentials instead of map[string]string, as part of the
typed credentials migration (ocm-project#1047).

Changes:
- 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
- kubernetes/controller: update resolveResourceCredentials and
  VerifyResource return types to runtime.Typed; replace map[string]string
  credential literals with typed RSACredentials structs; update import
  aliases for oci/spec/credentials and oci/spec/identity/v1;
  fix import ordering in service_test.go and integration_test.go

Contributes: ocm-project#1047, ocm-project#1055, ocm-project#1056, ocm-project#1057

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>
Signed-off-by: Jakob Möller <contact@jakob-moeller.com>
On-behalf-of: @SAP <jakob.moeller@sap.com>
…ials dep

Transfer and controller modules now depend on helm
v0.0.0-20260522105049-e4d3ffbaf1f3 (gate 6 commit) which uses the
corrected oci/spec/identity/v1 import path instead of
oci/spec/credentials/identity/v1. Also adds rsa v0.0.0-20260522110833
which provides rsa/spec/credentials/v1 used by workerpool.

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>
Signed-off-by: Jakob Möller <contact@jakob-moeller.com>
On-behalf-of: @SAP <jakob.moeller@sap.com>

# Conflicts:
#	kubernetes/controller/go.sum
- Drop //nolint:staticcheck comments in deployer_controller.go and
  resource.go: credentials.Graph.Resolve now returns runtime.Typed
  directly (migration complete), so SA1019 no longer fires and the
  nolintlint linter flags them as unused
- Add missing blob/filesystem go.sum entry in transfer/integration

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>
Signed-off-by: Jakob Möller <contact@jakob-moeller.com>
On-behalf-of: @SAP <jakob.moeller@sap.com>
When no credentials are configured for a resource, the credential
resolver returns nil (runtime.Typed interface). ConvertToOCICredentials
was panicking on nil.GetType(). Return nil, nil for nil input to allow
unauthenticated access.

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>
Signed-off-by: Jakob Möller <contact@jakob-moeller.com>
On-behalf-of: @SAP <jakob.moeller@sap.com>
This reverts commit c70504e.

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>
When no credentials are configured for a resource (unauthenticated
access), the credential resolver returns nil (runtime.Typed interface).
ConvertToOCICredentials was panicking on nil.GetType().
Return nil, nil for nil input to allow unauthenticated OCI access.

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>
Signed-off-by: Jakob Möller <contact@jakob-moeller.com>
On-behalf-of: @SAP <jakob.moeller@sap.com>
While oci@v0.0.43 is the latest published version, ConvertToOCICredentials
panics when called with nil (unauthenticated access path). Add replace
directives pointing to the fix commit on jakobmoellerdev fork until
a new oci release is published with the nil guard.

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>
Signed-off-by: Jakob Möller <contact@jakob-moeller.com>
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>
Signed-off-by: Jakob Möller <contact@jakob-moeller.com>
On-behalf-of: @SAP <jakob.moeller@sap.com>
The v0.0.43 refactoring of ProcessResourceDigest in resource_repository
extracted resolveOCIImageRepo but stopped converting resource.Access to
the typed *OCIImage before delegating to the inner oci.Repository.
The inner repository does a direct type switch, so *runtime.Raw access
(from JSON deserialization) hits the default case and returns an error.

Bump to fork commit e8ebef6 which resolves resource.Access via
the scheme before calling repo.ProcessResourceDigest, restoring the
v0.0.40 behavior.

Signed-off-by: Jakob Möller <contact@jakob-moeller.com>
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>
On-behalf-of: SAP <matthias.bruns@sap.com>
Signed-off-by: Matthias Bruns <git@matthiasbruns.com>
@github-actions github-actions Bot removed the size/m Medium label May 26, 2026
@github-actions github-actions Bot added size/l Large component/github-actions Changes on GitHub Actions or within `.github/` directory labels May 26, 2026
jakobmoellerdev and others added 5 commits May 26, 2026 12:22
This reverts commit c70504e.

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>
When no credentials are configured for a resource (unauthenticated
access), the credential resolver returns nil (runtime.Typed interface).
ConvertToOCICredentials was panicking on nil.GetType().
Return nil, nil for nil input to allow unauthenticated OCI access.

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>
Signed-off-by: Jakob Möller <contact@jakob-moeller.com>
On-behalf-of: @SAP <jakob.moeller@sap.com>
While oci@v0.0.43 is the latest published version, ConvertToOCICredentials
panics when called with nil (unauthenticated access path). Add replace
directives pointing to the fix commit on jakobmoellerdev fork until
a new oci release is published with the nil guard.

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>
Signed-off-by: Jakob Möller <contact@jakob-moeller.com>
On-behalf-of: @SAP <jakob.moeller@sap.com>
The v0.0.43 refactoring of ProcessResourceDigest in resource_repository
extracted resolveOCIImageRepo but stopped converting resource.Access to
the typed *OCIImage before delegating to the inner oci.Repository.
The inner repository does a direct type switch, so *runtime.Raw access
(from JSON deserialization) hits the default case and returns an error.

Bump to fork commit e8ebef6 which resolves resource.Access via
the scheme before calling repo.ProcessResourceDigest, restoring the
v0.0.40 behavior.

Signed-off-by: Jakob Möller <contact@jakob-moeller.com>
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>
On-behalf-of: SAP <matthias.bruns@sap.com>
Signed-off-by: Matthias Bruns <git@matthiasbruns.com>
@matthiasbruns matthiasbruns force-pushed the feat/1047-typed-credentials-gate7 branch from 2b5793e to 3a2e55f Compare May 26, 2026 10:23
@github-actions github-actions Bot added size/m Medium and removed size/l Large labels May 26, 2026
On-behalf-of: SAP <matthias.bruns@sap.com>
Signed-off-by: Matthias Bruns <git@matthiasbruns.com>
On-behalf-of: SAP <matthias.bruns@sap.com>
Signed-off-by: Matthias Bruns <git@matthiasbruns.com>
On-behalf-of: SAP <matthias.bruns@sap.com>
Signed-off-by: Matthias Bruns <git@matthiasbruns.com>
@matthiasbruns matthiasbruns requested a review from fabianburth May 26, 2026 12:10
@jakobmoellerdev jakobmoellerdev merged commit aae701a into open-component-model:main May 26, 2026
7 checks passed
@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 component/github-actions Changes on GitHub Actions or within `.github/` directory kind/feature new feature, enhancement, improvement, extension size/m Medium

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants