Skip to content

Commit ed4ffe1

Browse files
blueworrybearlafriks
authored andcommitted
Send tag create and push webhook when release created on UI (#8671)
* 'update' * Send push tag event when release created * send tag create event while release created in UI * update to go v1.13 * fix gofmt error * update #8671 move release tag created hook to modules/notification/webhook due to #8802 refactoring * use NotifyCreateRef and NotifyPushCommits instead of NotifyNewReleaseTag * move tag notification to correct place
1 parent b1a90f7 commit ed4ffe1

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed

services/release/release.go

+49
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
"code.gitea.io/gitea/modules/git"
1414
"code.gitea.io/gitea/modules/log"
1515
"code.gitea.io/gitea/modules/process"
16+
"code.gitea.io/gitea/modules/setting"
1617
api "code.gitea.io/gitea/modules/structs"
1718
"code.gitea.io/gitea/modules/timeutil"
1819
)
@@ -37,6 +38,54 @@ func createTag(gitRepo *git.Repository, rel *models.Release) error {
3738
return err
3839
}
3940
rel.LowerTagName = strings.ToLower(rel.TagName)
41+
// Prepare Notify
42+
if err := rel.LoadAttributes(); err != nil {
43+
log.Error("LoadAttributes: %v", err)
44+
return err
45+
}
46+
47+
refName := git.TagPrefix + rel.TagName
48+
apiPusher := rel.Publisher.APIFormat()
49+
apiRepo := rel.Repo.APIFormat(models.AccessModeNone)
50+
apiCommits, err := models.NewPushCommits().ToAPIPayloadCommits(rel.Repo.RepoPath(), rel.Repo.HTMLURL())
51+
if err != nil {
52+
log.Error("commits.ToAPIPayloadCommits failed: %v", err)
53+
return err
54+
}
55+
56+
if err := models.PrepareWebhooks(rel.Repo, models.HookEventPush, &api.PushPayload{
57+
Ref: refName,
58+
Before: git.EmptySHA,
59+
After: commit.ID.String(),
60+
CompareURL: setting.AppURL + models.NewPushCommits().CompareURL,
61+
Commits: apiCommits,
62+
Repo: apiRepo,
63+
Pusher: apiPusher,
64+
Sender: apiPusher,
65+
}); err != nil {
66+
log.Error("PrepareWebhooks: %v", err)
67+
}
68+
69+
gitRepo, err := git.OpenRepository(rel.Repo.RepoPath())
70+
if err != nil {
71+
log.Error("OpenRepository[%s]: %v", rel.Repo.RepoPath(), err)
72+
}
73+
shaSum, err := gitRepo.GetTagCommitID(refName)
74+
if err != nil {
75+
gitRepo.Close()
76+
log.Error("GetTagCommitID[%s]: %v", refName, err)
77+
}
78+
gitRepo.Close()
79+
80+
if err = models.PrepareWebhooks(rel.Repo, models.HookEventCreate, &api.CreatePayload{
81+
Ref: git.RefEndName(refName),
82+
Sha: shaSum,
83+
RefType: "tag",
84+
Repo: apiRepo,
85+
Sender: apiPusher,
86+
}); err != nil {
87+
return fmt.Errorf("PrepareWebhooks: %v", err)
88+
}
4089
}
4190
commit, err := gitRepo.GetTagCommit(rel.TagName)
4291
if err != nil {

0 commit comments

Comments
 (0)