Skip to content

Commit fa4e892

Browse files
committed
Move release webhook to notification
1 parent 8a84d82 commit fa4e892

File tree

2 files changed

+51
-38
lines changed

2 files changed

+51
-38
lines changed

modules/notification/webhook/webhook.go

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -627,3 +627,50 @@ func (m *webhookNotifier) NotifyDeleteRef(pusher *models.User, repo *models.Repo
627627
log.Error("PrepareWebhooks.(delete branch): %v", err)
628628
}
629629
}
630+
631+
func (m *webhookNotifier) NotifyNewRelease(rel *models.Release) {
632+
if err := rel.LoadAttributes(); err != nil {
633+
log.Error("LoadAttributes: %v", err)
634+
return
635+
}
636+
637+
mode, _ := models.AccessLevel(rel.Publisher, rel.Repo)
638+
if err := webhook_module.PrepareWebhooks(rel.Repo, models.HookEventRelease, &api.ReleasePayload{
639+
Action: api.HookReleasePublished,
640+
Release: rel.APIFormat(),
641+
Repository: rel.Repo.APIFormat(mode),
642+
Sender: rel.Publisher.APIFormat(),
643+
}); err != nil {
644+
log.Error("PrepareWebhooks: %v", err)
645+
}
646+
}
647+
648+
func (m *webhookNotifier) NotifyUpdateRelease(doer *models.User, rel *models.Release) {
649+
if err := rel.LoadAttributes(); err != nil {
650+
log.Error("LoadAttributes: %v", err)
651+
return
652+
}
653+
654+
// even if attachments added failed, hooks will be still triggered
655+
mode, _ := models.AccessLevel(doer, rel.Repo)
656+
if err := webhook.PrepareWebhooks(rel.Repo, models.HookEventRelease, &api.ReleasePayload{
657+
Action: api.HookReleaseUpdated,
658+
Release: rel.APIFormat(),
659+
Repository: rel.Repo.APIFormat(mode),
660+
Sender: doer.APIFormat(),
661+
}); err != nil {
662+
log.Error("PrepareWebhooks: %v", err)
663+
}
664+
}
665+
666+
func (m *webhookNotifier) NotifyDeleteRelease(doer *models.User, rel *models.Release) {
667+
mode, _ := models.AccessLevel(doer, rel.Repo)
668+
if err := webhook.PrepareWebhooks(rel.Repo, models.HookEventRelease, &api.ReleasePayload{
669+
Action: api.HookReleaseDeleted,
670+
Release: rel.APIFormat(),
671+
Repository: rel.Repo.APIFormat(mode),
672+
Sender: doer.APIFormat(),
673+
}); err != nil {
674+
log.Error("PrepareWebhooks: %v", err)
675+
}
676+
}

services/release/release.go

Lines changed: 4 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,9 @@ import (
1212
"code.gitea.io/gitea/models"
1313
"code.gitea.io/gitea/modules/git"
1414
"code.gitea.io/gitea/modules/log"
15+
"code.gitea.io/gitea/modules/notification"
1516
"code.gitea.io/gitea/modules/process"
16-
api "code.gitea.io/gitea/modules/structs"
1717
"code.gitea.io/gitea/modules/timeutil"
18-
"code.gitea.io/gitea/modules/webhook"
1918
)
2019

2120
func createTag(gitRepo *git.Repository, rel *models.Release) error {
@@ -81,19 +80,7 @@ func CreateRelease(gitRepo *git.Repository, rel *models.Release, attachmentUUIDs
8180
}
8281

8382
if !rel.IsDraft {
84-
if err := rel.LoadAttributes(); err != nil {
85-
log.Error("LoadAttributes: %v", err)
86-
} else {
87-
mode, _ := models.AccessLevel(rel.Publisher, rel.Repo)
88-
if err := webhook.PrepareWebhooks(rel.Repo, models.HookEventRelease, &api.ReleasePayload{
89-
Action: api.HookReleasePublished,
90-
Release: rel.APIFormat(),
91-
Repository: rel.Repo.APIFormat(mode),
92-
Sender: rel.Publisher.APIFormat(),
93-
}); err != nil {
94-
log.Error("PrepareWebhooks: %v", err)
95-
}
96-
}
83+
notification.NotifyNewRelease(rel)
9784
}
9885

9986
return nil
@@ -114,20 +101,7 @@ func UpdateRelease(doer *models.User, gitRepo *git.Repository, rel *models.Relea
114101
log.Error("AddReleaseAttachments: %v", err)
115102
}
116103

117-
if err = rel.LoadAttributes(); err != nil {
118-
return err
119-
}
120-
121-
// even if attachments added failed, hooks will be still triggered
122-
mode, _ := models.AccessLevel(doer, rel.Repo)
123-
if err1 := webhook.PrepareWebhooks(rel.Repo, models.HookEventRelease, &api.ReleasePayload{
124-
Action: api.HookReleaseUpdated,
125-
Release: rel.APIFormat(),
126-
Repository: rel.Repo.APIFormat(mode),
127-
Sender: doer.APIFormat(),
128-
}); err1 != nil {
129-
log.Error("PrepareWebhooks: %v", err)
130-
}
104+
notification.NotifyUpdateRelease(doer, rel)
131105

132106
return err
133107
}
@@ -183,15 +157,7 @@ func DeleteReleaseByID(id int64, doer *models.User, delTag bool) error {
183157
}
184158
}
185159

186-
mode, _ := models.AccessLevel(doer, rel.Repo)
187-
if err := webhook.PrepareWebhooks(rel.Repo, models.HookEventRelease, &api.ReleasePayload{
188-
Action: api.HookReleaseDeleted,
189-
Release: rel.APIFormat(),
190-
Repository: rel.Repo.APIFormat(mode),
191-
Sender: doer.APIFormat(),
192-
}); err != nil {
193-
log.Error("PrepareWebhooks: %v", err)
194-
}
160+
notification.NotifyDeleteRelease(doer, rel)
195161

196162
return nil
197163
}

0 commit comments

Comments
 (0)