mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-30 06:38:37 -04:00 
			
		
		
		
	Notify on container image create (#22806)
Fixes #22791 --------- Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
This commit is contained in:
		| @@ -17,6 +17,7 @@ import ( | |||||||
| 	user_model "code.gitea.io/gitea/models/user" | 	user_model "code.gitea.io/gitea/models/user" | ||||||
| 	"code.gitea.io/gitea/modules/json" | 	"code.gitea.io/gitea/modules/json" | ||||||
| 	"code.gitea.io/gitea/modules/log" | 	"code.gitea.io/gitea/modules/log" | ||||||
|  | 	"code.gitea.io/gitea/modules/notification" | ||||||
| 	packages_module "code.gitea.io/gitea/modules/packages" | 	packages_module "code.gitea.io/gitea/modules/packages" | ||||||
| 	container_module "code.gitea.io/gitea/modules/packages/container" | 	container_module "code.gitea.io/gitea/modules/packages/container" | ||||||
| 	"code.gitea.io/gitea/modules/util" | 	"code.gitea.io/gitea/modules/util" | ||||||
| @@ -71,11 +72,9 @@ func processManifest(mci *manifestCreationInfo, buf *packages_module.HashedBuffe | |||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	if isImageManifestMediaType(mci.MediaType) { | 	if isImageManifestMediaType(mci.MediaType) { | ||||||
| 		d, err := processImageManifest(mci, buf) | 		return processImageManifest(mci, buf) | ||||||
| 		return d, err |  | ||||||
| 	} else if isImageIndexMediaType(mci.MediaType) { | 	} else if isImageIndexMediaType(mci.MediaType) { | ||||||
| 		d, err := processImageManifestIndex(mci, buf) | 		return processImageManifestIndex(mci, buf) | ||||||
| 		return d, err |  | ||||||
| 	} | 	} | ||||||
| 	return "", errManifestInvalid | 	return "", errManifestInvalid | ||||||
| } | } | ||||||
| @@ -182,6 +181,10 @@ func processImageManifest(mci *manifestCreationInfo, buf *packages_module.Hashed | |||||||
| 			return err | 			return err | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
|  | 		if err := notifyPackageCreate(mci.Creator, pv); err != nil { | ||||||
|  | 			return err | ||||||
|  | 		} | ||||||
|  |  | ||||||
| 		manifestDigest = digest | 		manifestDigest = digest | ||||||
|  |  | ||||||
| 		return nil | 		return nil | ||||||
| @@ -271,6 +274,10 @@ func processImageManifestIndex(mci *manifestCreationInfo, buf *packages_module.H | |||||||
| 			return err | 			return err | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
|  | 		if err := notifyPackageCreate(mci.Creator, pv); err != nil { | ||||||
|  | 			return err | ||||||
|  | 		} | ||||||
|  |  | ||||||
| 		manifestDigest = digest | 		manifestDigest = digest | ||||||
|  |  | ||||||
| 		return nil | 		return nil | ||||||
| @@ -282,6 +289,17 @@ func processImageManifestIndex(mci *manifestCreationInfo, buf *packages_module.H | |||||||
| 	return manifestDigest, nil | 	return manifestDigest, nil | ||||||
| } | } | ||||||
|  |  | ||||||
|  | func notifyPackageCreate(doer *user_model.User, pv *packages_model.PackageVersion) error { | ||||||
|  | 	pd, err := packages_model.GetPackageDescriptor(db.DefaultContext, pv) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return err | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	notification.NotifyPackageCreate(db.DefaultContext, doer, pd) | ||||||
|  |  | ||||||
|  | 	return nil | ||||||
|  | } | ||||||
|  |  | ||||||
| func createPackageAndVersion(ctx context.Context, mci *manifestCreationInfo, metadata *container_module.Metadata) (*packages_model.PackageVersion, error) { | func createPackageAndVersion(ctx context.Context, mci *manifestCreationInfo, metadata *container_module.Metadata) (*packages_model.PackageVersion, error) { | ||||||
| 	created := true | 	created := true | ||||||
| 	p := &packages_model.Package{ | 	p := &packages_model.Package{ | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user