@@ -23,6 +23,7 @@ import (
2323 "code.gitea.io/gitea/modules/util"
2424 notify_service "code.gitea.io/gitea/services/notify"
2525 packages_service "code.gitea.io/gitea/services/packages"
26+ container_service "code.gitea.io/gitea/services/packages/container"
2627
2728 "github.com/opencontainers/go-digest"
2829 oci "github.com/opencontainers/image-spec/specs-go/v1"
@@ -84,12 +85,11 @@ func processOciImageManifest(ctx context.Context, mci *manifestCreationInfo, buf
8485 manifestDigest := ""
8586
8687 err := func () error {
87- var manifest oci. Manifest
88- if err := json . NewDecoder ( buf ). Decode ( & manifest ); err != nil {
88+ manifest , configDescriptor , metadata , err := container_service . ParseManifestMetadata ( ctx , buf , mci . Owner . ID , mci . Image )
89+ if err != nil {
8990 return err
9091 }
91-
92- if _ , err := buf .Seek (0 , io .SeekStart ); err != nil {
92+ if _ , err = buf .Seek (0 , io .SeekStart ); err != nil {
9393 return err
9494 }
9595
@@ -99,28 +99,7 @@ func processOciImageManifest(ctx context.Context, mci *manifestCreationInfo, buf
9999 }
100100 defer committer .Close ()
101101
102- configDescriptor , err := container_model .GetContainerBlob (ctx , & container_model.BlobSearchOptions {
103- OwnerID : mci .Owner .ID ,
104- Image : mci .Image ,
105- Digest : string (manifest .Config .Digest ),
106- })
107- if err != nil {
108- return err
109- }
110-
111- configReader , err := packages_module .NewContentStore ().Get (packages_module .BlobHash256Key (configDescriptor .Blob .HashSHA256 ))
112- if err != nil {
113- return err
114- }
115- defer configReader .Close ()
116-
117- metadata , err := container_module .ParseImageConfig (manifest .Config .MediaType , configReader )
118- if err != nil {
119- return err
120- }
121-
122102 blobReferences := make ([]* blobReference , 0 , 1 + len (manifest .Layers ))
123-
124103 blobReferences = append (blobReferences , & blobReference {
125104 Digest : manifest .Config .Digest ,
126105 MediaType : manifest .Config .MediaType ,
@@ -388,19 +367,16 @@ func createPackageAndVersion(ctx context.Context, mci *manifestCreationInfo, met
388367 return nil , err
389368 }
390369 } else {
391- props , err := packages_model .GetPropertiesByName (ctx , packages_model .PropertyTypeVersion , pv .ID , container_module .PropertyManifestTagged )
392- if err != nil {
370+ if err = packages_model .DeletePropertiesByName (ctx , packages_model .PropertyTypeVersion , pv .ID , container_module .PropertyManifestTagged ); err != nil {
393371 return nil , err
394372 }
395- for _ , prop := range props {
396- if err = packages_model .DeletePropertyByID (ctx , prop .ID ); err != nil {
397- return nil , err
398- }
399- }
400373 }
401374
375+ if err = packages_model .DeletePropertiesByName (ctx , packages_model .PropertyTypeVersion , pv .ID , container_module .PropertyManifestReference ); err != nil {
376+ return nil , err
377+ }
402378 for _ , manifest := range metadata .Manifests {
403- if err = packages_model .InsertOrUpdateProperty (ctx , packages_model .PropertyTypeVersion , pv .ID , container_module .PropertyManifestReference , manifest .Digest ); err != nil {
379+ if _ , err = packages_model .InsertProperty (ctx , packages_model .PropertyTypeVersion , pv .ID , container_module .PropertyManifestReference , manifest .Digest ); err != nil {
404380 return nil , err
405381 }
406382 }
0 commit comments