|
|
|
@ -711,19 +711,9 @@ func (c *Client) Push(data []byte, ref string, options ...PushOption) (*PushResu
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
ociAnnotations := generateOCIAnnotations(meta, operation.creationTime)
|
|
|
|
|
manifest := ocispec.Manifest{
|
|
|
|
|
Versioned: specs.Versioned{SchemaVersion: 2},
|
|
|
|
|
Config: configDescriptor,
|
|
|
|
|
Layers: layers,
|
|
|
|
|
Annotations: ociAnnotations,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
manifestData, err := json.Marshal(manifest)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
manifestDescriptor, err := oras.TagBytes(ctx, memoryStore, ocispec.MediaTypeImageManifest, manifestData, ref)
|
|
|
|
|
manifestDescriptor, err := c.tagManifest(ctx, memoryStore, configDescriptor,
|
|
|
|
|
layers, ociAnnotations, parsedRef)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
@ -924,3 +914,24 @@ func (c *Client) ValidateReference(ref, version string, u *url.URL) (*url.URL, e
|
|
|
|
|
|
|
|
|
|
return u, err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// tagManifest prepares and tags a manifest in memory storage
|
|
|
|
|
func (c *Client) tagManifest(ctx context.Context, memoryStore *memory.Store,
|
|
|
|
|
configDescriptor ocispec.Descriptor, layers []ocispec.Descriptor,
|
|
|
|
|
ociAnnotations map[string]string, parsedRef reference) (ocispec.Descriptor, error) {
|
|
|
|
|
|
|
|
|
|
manifest := ocispec.Manifest{
|
|
|
|
|
Versioned: specs.Versioned{SchemaVersion: 2},
|
|
|
|
|
Config: configDescriptor,
|
|
|
|
|
Layers: layers,
|
|
|
|
|
Annotations: ociAnnotations,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
manifestData, err := json.Marshal(manifest)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return ocispec.Descriptor{}, err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return oras.TagBytes(ctx, memoryStore, ocispec.MediaTypeImageManifest,
|
|
|
|
|
manifestData, parsedRef.String())
|
|
|
|
|
}
|
|
|
|
|