@@ -6,6 +6,7 @@ package webhook
66import (
77 "context"
88
9+ git_model "code.gitea.io/gitea/models/git"
910 issues_model "code.gitea.io/gitea/models/issues"
1011 packages_model "code.gitea.io/gitea/models/packages"
1112 "code.gitea.io/gitea/models/perm"
@@ -861,6 +862,36 @@ func (m *webhookNotifier) SyncPushCommits(ctx context.Context, pusher *user_mode
861862 }
862863}
863864
865+ func (m * webhookNotifier ) CreateCommitStatus (ctx context.Context , repo * repo_model.Repository , commit * repository.PushCommit , sender * user_model.User , status * git_model.CommitStatus ) {
866+ apiSender := convert .ToUser (ctx , sender , nil )
867+ apiCommit , err := repository .ToAPIPayloadCommit (ctx , map [string ]* user_model.User {}, repo .RepoPath (), repo .HTMLURL (), commit )
868+ if err != nil {
869+ log .Error ("commits.ToAPIPayloadCommits failed: %v" , err )
870+ return
871+ }
872+
873+ payload := api.CommitStatusPayload {
874+ Context : status .Context ,
875+ CreatedAt : status .CreatedUnix .AsTime ().UTC (),
876+ Description : status .Description ,
877+ ID : status .ID ,
878+ SHA : commit .Sha1 ,
879+ State : status .State .String (),
880+ TargetURL : status .TargetURL ,
881+
882+ Commit : apiCommit ,
883+ Repo : convert .ToRepo (ctx , repo , access_model.Permission {AccessMode : perm .AccessModeOwner }),
884+ Sender : apiSender ,
885+ }
886+ if ! status .UpdatedUnix .IsZero () {
887+ t := status .UpdatedUnix .AsTime ().UTC ()
888+ payload .UpdatedAt = & t
889+ }
890+ if err := PrepareWebhooks (ctx , EventSource {Repository : repo }, webhook_module .HookEventStatus , & payload ); err != nil {
891+ log .Error ("PrepareWebhooks: %v" , err )
892+ }
893+ }
894+
864895func (m * webhookNotifier ) SyncCreateRef (ctx context.Context , pusher * user_model.User , repo * repo_model.Repository , refFullName git.RefName , refID string ) {
865896 m .CreateRef (ctx , pusher , repo , refFullName , refID )
866897}
0 commit comments