-
Notifications
You must be signed in to change notification settings - Fork 181
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Copy Artifact Reference Graph #307
Comments
|
I will help with this |
@CharingJC You may start with basic functionalities similar to #391 |
Advanced scenarios depend on oras-project/oras-go#201 and oras-project/oras-go#203. |
I would recommend limiting the number of references of that get copied. If we are deep copying referrers then we need to make sure that we also have |
If we compared this to a file system folder copy, would a user expect only the first What if we made the copy cancellable, just like a folder copy?
If the user cancells the operation, we simply stop where it left off.
For filtering, we should tease out the scenarios to a phase 2. Would a user really want to filter, just by artifactType? I could see wanting to copy the last n versions of a scan result, based on the |
@SteveLasker To support cancellable copy of artifacts like file system mechanism sounds useful. I think we can turn it into a GitHub discussion and listen to more users' feedback. This feature might be nice to have but not very urgent for basic scenarios. |
Agreed. What I'd suggest is recognizing this is more likely the direction we'd go, that we don't overly constrain the depth or quantity, which could actually create instability as users won't understand why some references were truncated when copying. To this end, I'd suggest we might limit to 50 total references. What is the current behavior of the prototype? If a user starts a copy, and hits cancel, what happens? |
Goal
Support copying a graph of artifacts from a source to a destination registry.
Scope
oras copy ...
artifactTypes
artifactTypes
While the
oras
cli would support the above commands, the functionality would be provided inoras-go
, enabling other CLIs to benefit from the capabilities. Theoras cli
is simply a wrapper of the underlying library capabilities.Promoting Artifacts
DevOps workflows account for content promotion between environments. Content may be promoted from dev through staging to production. Or, it may be promoted from a public source into a controlled environment.
Consider the guidance for Consuming Public Content, where content required for internal use is imported from a public registry. How is this different from promoting content from dev through production?
What Gets Promoted
ORAS Artifacts enables a graph of content, including signatures, SBoMs, security scan results and other content that hasn't been thought of yet.
A key value of separable artifacts is the ability to validate content, independent from where it may originate from. Before importing a container image, a signature and/or SBoM may be validated. Only after the validation is the image imported, or promoted.
When import is promoted, the entire graph of artifacts would likely be imported as the next stage of the promotion should be able to validate independent of any previous steps.
At the same time, not all referenced artifacts may be desired. A category of
artifactTypes
or specific artifacts within a category may need to be filtered out, or filtered in.Promoting Content Walkthrough
Copy with all references
Copy with specific references, included
Copy with specific references, excluded
Copy with specific references, included, filtered by annotation (inclusion)
oras cp registry.wabbit-networks.io/net-monitor:v1 \ -r \ -m application/vnd.cncf.notary.v2 \ --match-annotation "org.cncf.notary.v2.signature.subject=acme-rockets.io"
Copy with specific references, included, filtered by annotation (exclusion)
oras cp registry.wabbit-networks.io/net-monitor:v1 \ -r \ -m application/vnd.cncf.notary.v2 \ --exclude-annotation "org.cncf.notary.v2.signature.subject=wabbit-networks.io"
Options
The text was updated successfully, but these errors were encountered: