mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-11-09 03:11:51 +01:00
Support triggering workflows by wiki related events (#24119)
This PR is to support triggering workflows by wiki related events like creating, editing or deleting wiki pages. In GitHub, this event is called [gollum](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#gollum)
This commit is contained in:
parent
4014200021
commit
5eb4c63867
4 changed files with 47 additions and 2 deletions
|
@ -21,6 +21,7 @@ const (
|
||||||
githubEventIssueComment = "issue_comment"
|
githubEventIssueComment = "issue_comment"
|
||||||
githubEventRelease = "release"
|
githubEventRelease = "release"
|
||||||
githubEventPullRequestComment = "pull_request_comment"
|
githubEventPullRequestComment = "pull_request_comment"
|
||||||
|
githubEventGollum = "gollum"
|
||||||
)
|
)
|
||||||
|
|
||||||
// canGithubEventMatch check if the input Github event can match any Gitea event.
|
// canGithubEventMatch check if the input Github event can match any Gitea event.
|
||||||
|
@ -29,6 +30,10 @@ func canGithubEventMatch(eventName string, triggedEvent webhook_module.HookEvent
|
||||||
case githubEventRegistryPackage:
|
case githubEventRegistryPackage:
|
||||||
return triggedEvent == webhook_module.HookEventPackage
|
return triggedEvent == webhook_module.HookEventPackage
|
||||||
|
|
||||||
|
// See https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#gollum
|
||||||
|
case githubEventGollum:
|
||||||
|
return triggedEvent == webhook_module.HookEventWiki
|
||||||
|
|
||||||
case githubEventIssues:
|
case githubEventIssues:
|
||||||
switch triggedEvent {
|
switch triggedEvent {
|
||||||
case webhook_module.HookEventIssues,
|
case webhook_module.HookEventIssues,
|
||||||
|
|
|
@ -119,8 +119,6 @@ func detectMatched(commit *git.Commit, triggedEvent webhook_module.HookEventType
|
||||||
webhook_module.HookEventCreate,
|
webhook_module.HookEventCreate,
|
||||||
webhook_module.HookEventDelete,
|
webhook_module.HookEventDelete,
|
||||||
webhook_module.HookEventFork,
|
webhook_module.HookEventFork,
|
||||||
// FIXME: `wiki` event should match `gollum` event
|
|
||||||
// See https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#gollum
|
|
||||||
webhook_module.HookEventWiki:
|
webhook_module.HookEventWiki:
|
||||||
if len(evt.Acts()) != 0 {
|
if len(evt.Acts()) != 0 {
|
||||||
log.Warn("Ignore unsupported %s event arguments %v", triggedEvent, evt.Acts())
|
log.Warn("Ignore unsupported %s event arguments %v", triggedEvent, evt.Acts())
|
||||||
|
|
|
@ -92,6 +92,13 @@ func TestDetectMatched(t *testing.T) {
|
||||||
yamlOn: "on:\n registry_package:\n types: [updated]",
|
yamlOn: "on:\n registry_package:\n types: [updated]",
|
||||||
expected: false,
|
expected: false,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
desc: "HookEventWiki(wiki) matches githubEventGollum(gollum)",
|
||||||
|
triggedEvent: webhook_module.HookEventWiki,
|
||||||
|
payload: nil,
|
||||||
|
yamlOn: "on: gollum",
|
||||||
|
expected: true,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, tc := range testCases {
|
for _, tc := range testCases {
|
||||||
|
|
|
@ -526,3 +526,38 @@ func (n *actionsNotifier) NotifyPullRequestChangeTargetBranch(ctx context.Contex
|
||||||
WithPullRequest(pr).
|
WithPullRequest(pr).
|
||||||
Notify(ctx)
|
Notify(ctx)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (n *actionsNotifier) NotifyNewWikiPage(ctx context.Context, doer *user_model.User, repo *repo_model.Repository, page, comment string) {
|
||||||
|
ctx = withMethod(ctx, "NotifyNewWikiPage")
|
||||||
|
|
||||||
|
newNotifyInput(repo, doer, webhook_module.HookEventWiki).WithPayload(&api.WikiPayload{
|
||||||
|
Action: api.HookWikiCreated,
|
||||||
|
Repository: convert.ToRepo(ctx, repo, perm_model.AccessModeOwner),
|
||||||
|
Sender: convert.ToUser(ctx, doer, nil),
|
||||||
|
Page: page,
|
||||||
|
Comment: comment,
|
||||||
|
}).Notify(ctx)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (n *actionsNotifier) NotifyEditWikiPage(ctx context.Context, doer *user_model.User, repo *repo_model.Repository, page, comment string) {
|
||||||
|
ctx = withMethod(ctx, "NotifyEditWikiPage")
|
||||||
|
|
||||||
|
newNotifyInput(repo, doer, webhook_module.HookEventWiki).WithPayload(&api.WikiPayload{
|
||||||
|
Action: api.HookWikiEdited,
|
||||||
|
Repository: convert.ToRepo(ctx, repo, perm_model.AccessModeOwner),
|
||||||
|
Sender: convert.ToUser(ctx, doer, nil),
|
||||||
|
Page: page,
|
||||||
|
Comment: comment,
|
||||||
|
}).Notify(ctx)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (n *actionsNotifier) NotifyDeleteWikiPage(ctx context.Context, doer *user_model.User, repo *repo_model.Repository, page string) {
|
||||||
|
ctx = withMethod(ctx, "NotifyDeleteWikiPage")
|
||||||
|
|
||||||
|
newNotifyInput(repo, doer, webhook_module.HookEventWiki).WithPayload(&api.WikiPayload{
|
||||||
|
Action: api.HookWikiDeleted,
|
||||||
|
Repository: convert.ToRepo(ctx, repo, perm_model.AccessModeOwner),
|
||||||
|
Sender: convert.ToUser(ctx, doer, nil),
|
||||||
|
Page: page,
|
||||||
|
}).Notify(ctx)
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue