diff --git a/docs/content/docs/providers/bitbucket-datacenter.md b/docs/content/docs/providers/bitbucket-datacenter.md index 910769991..8f65db907 100644 --- a/docs/content/docs/providers/bitbucket-datacenter.md +++ b/docs/content/docs/providers/bitbucket-datacenter.md @@ -61,6 +61,9 @@ Create a webhook on the repository following this guide: - Pull Request -> Opened - Pull Request -> Source branch updated - Pull Request -> Comments added + - Pull Request -> Merged + - Pull Request -> Modified + - Pull Request -> Approved ### Create the Secret diff --git a/pkg/provider/bitbucketdatacenter/detect.go b/pkg/provider/bitbucketdatacenter/detect.go index 46a16c386..af52934a7 100644 --- a/pkg/provider/bitbucketdatacenter/detect.go +++ b/pkg/provider/bitbucketdatacenter/detect.go @@ -38,7 +38,7 @@ func (v *Provider) Detect(req *http.Request, payload string, logger *zap.Sugared switch e := eventPayload.(type) { case *types.PullRequestEvent: - if provider.Valid(event, []string{"pr:from_ref_updated", "pr:opened"}) { + if provider.Valid(event, []string{"pr:from_ref_updated", "pr:opened", "pr:merged", "pr:modified", "pr:reviewer:approved"}) { return setLoggerAndProceed(true, "", nil) } if provider.Valid(event, []string{"pr:comment:added"}) { diff --git a/pkg/provider/bitbucketdatacenter/detect_test.go b/pkg/provider/bitbucketdatacenter/detect_test.go index 824687d8c..af5a18cde 100644 --- a/pkg/provider/bitbucketdatacenter/detect_test.go +++ b/pkg/provider/bitbucketdatacenter/detect_test.go @@ -65,6 +65,20 @@ func TestProviderDetect(t *testing.T) { isBS: true, processReq: true, }, + { + name: "pull_request merged event", + event: types.PullRequestEvent{}, + eventType: "pr:merged", + isBS: true, + processReq: true, + }, + { + name: "pull_request modified event", + event: types.PullRequestEvent{}, + eventType: "pr:modified", + isBS: true, + processReq: true, + }, { name: "retest comment", event: types.PullRequestEvent{ @@ -110,6 +124,13 @@ func TestProviderDetect(t *testing.T) { isBS: true, processReq: true, }, + { + name: "pull_request user approval event", + event: types.PullRequestEvent{}, + eventType: "pr:reviewer:approved", + isBS: true, + processReq: true, + }, } for _, tt := range tests { diff --git a/pkg/provider/bitbucketdatacenter/parse_payload.go b/pkg/provider/bitbucketdatacenter/parse_payload.go index 46e67fa92..756357f66 100644 --- a/pkg/provider/bitbucketdatacenter/parse_payload.go +++ b/pkg/provider/bitbucketdatacenter/parse_payload.go @@ -107,7 +107,7 @@ func (v *Provider) ParsePayload(_ context.Context, _ *params.Run, request *http. switch e := eventPayload.(type) { case *types.PullRequestEvent: - if provider.Valid(eventType, []string{"pr:from_ref_updated", "pr:opened"}) { + if provider.Valid(eventType, []string{"pr:from_ref_updated", "pr:opened", "pr:merged", "pr:modified", "pr:reviewer:approved"}) { processedEvent.TriggerTarget = triggertype.PullRequest processedEvent.EventType = triggertype.PullRequest.String() } else if provider.Valid(eventType, []string{"pr:comment:added", "pr:comment:edited"}) { @@ -232,7 +232,7 @@ func parsePayloadType(event string) (any, error) { var localEvent string if strings.HasPrefix(event, "pr:") { if !provider.Valid(event, []string{ - "pr:from_ref_updated", "pr:opened", "pr:comment:added", "pr:comment:edited", + "pr:from_ref_updated", "pr:opened", "pr:comment:added", "pr:comment:edited", "pr:merged", "pr:modified", "pr:reviewer:approved", }) { return nil, fmt.Errorf("event \"%s\" is not supported", event) }