From bd95e51c6b803bcdf7bb2abbb54b7299dfcfdcfb Mon Sep 17 00:00:00 2001 From: Matthew Luckam Date: Thu, 28 May 2026 14:32:14 -0400 Subject: [PATCH 1/3] feat: added support for provider bitbucket datacenter pull request event merged "pr:merged" --- docs/content/docs/providers/bitbucket-datacenter.md | 1 + pkg/provider/bitbucketdatacenter/detect.go | 2 +- pkg/provider/bitbucketdatacenter/detect_test.go | 7 +++++++ pkg/provider/bitbucketdatacenter/parse_payload.go | 4 ++-- 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/docs/content/docs/providers/bitbucket-datacenter.md b/docs/content/docs/providers/bitbucket-datacenter.md index 9107699911..a029c75d4d 100644 --- a/docs/content/docs/providers/bitbucket-datacenter.md +++ b/docs/content/docs/providers/bitbucket-datacenter.md @@ -61,6 +61,7 @@ Create a webhook on the repository following this guide: - Pull Request -> Opened - Pull Request -> Source branch updated - Pull Request -> Comments added + - Pull Request -> Merged ### Create the Secret diff --git a/pkg/provider/bitbucketdatacenter/detect.go b/pkg/provider/bitbucketdatacenter/detect.go index 46a16c3866..78f81e0165 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"}) { 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 824687d8c0..ff349a8b5b 100644 --- a/pkg/provider/bitbucketdatacenter/detect_test.go +++ b/pkg/provider/bitbucketdatacenter/detect_test.go @@ -65,6 +65,13 @@ 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: "retest comment", event: types.PullRequestEvent{ diff --git a/pkg/provider/bitbucketdatacenter/parse_payload.go b/pkg/provider/bitbucketdatacenter/parse_payload.go index 46e67fa923..f275dfb4dc 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"}) { 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", }) { return nil, fmt.Errorf("event \"%s\" is not supported", event) } From d146363fbced70d0c071168c4433597aba2d5e92 Mon Sep 17 00:00:00 2001 From: Matthew Luckam Date: Thu, 28 May 2026 15:00:47 -0400 Subject: [PATCH 2/3] feat: added support for provider bitbucket datacenter pull request event modified "pr:modified" --- docs/content/docs/providers/bitbucket-datacenter.md | 1 + pkg/provider/bitbucketdatacenter/detect.go | 2 +- pkg/provider/bitbucketdatacenter/detect_test.go | 7 +++++++ pkg/provider/bitbucketdatacenter/parse_payload.go | 4 ++-- 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/docs/content/docs/providers/bitbucket-datacenter.md b/docs/content/docs/providers/bitbucket-datacenter.md index a029c75d4d..0b20d52107 100644 --- a/docs/content/docs/providers/bitbucket-datacenter.md +++ b/docs/content/docs/providers/bitbucket-datacenter.md @@ -62,6 +62,7 @@ Create a webhook on the repository following this guide: - Pull Request -> Source branch updated - Pull Request -> Comments added - Pull Request -> Merged + - Pull Request -> Modified ### Create the Secret diff --git a/pkg/provider/bitbucketdatacenter/detect.go b/pkg/provider/bitbucketdatacenter/detect.go index 78f81e0165..0833c041a3 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", "pr:merged"}) { + if provider.Valid(event, []string{"pr:from_ref_updated", "pr:opened", "pr:merged", "pr:modified"}) { 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 ff349a8b5b..ad743d4b81 100644 --- a/pkg/provider/bitbucketdatacenter/detect_test.go +++ b/pkg/provider/bitbucketdatacenter/detect_test.go @@ -72,6 +72,13 @@ func TestProviderDetect(t *testing.T) { 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{ diff --git a/pkg/provider/bitbucketdatacenter/parse_payload.go b/pkg/provider/bitbucketdatacenter/parse_payload.go index f275dfb4dc..f5f4cd043c 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", "pr:merged"}) { + if provider.Valid(eventType, []string{"pr:from_ref_updated", "pr:opened", "pr:merged", "pr:modified"}) { 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:merged", + "pr:from_ref_updated", "pr:opened", "pr:comment:added", "pr:comment:edited", "pr:merged", "pr:modified", }) { return nil, fmt.Errorf("event \"%s\" is not supported", event) } From 516b17ac41ea602c9fc7c55dce3afe408e14d654 Mon Sep 17 00:00:00 2001 From: Matthew Luckam Date: Thu, 28 May 2026 15:33:31 -0400 Subject: [PATCH 3/3] feat: added support for provider bitbucket datacenter pull request event approved "pr:reviewer:approved" --- docs/content/docs/providers/bitbucket-datacenter.md | 1 + pkg/provider/bitbucketdatacenter/detect.go | 2 +- pkg/provider/bitbucketdatacenter/detect_test.go | 7 +++++++ pkg/provider/bitbucketdatacenter/parse_payload.go | 4 ++-- 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/docs/content/docs/providers/bitbucket-datacenter.md b/docs/content/docs/providers/bitbucket-datacenter.md index 0b20d52107..8f65db9074 100644 --- a/docs/content/docs/providers/bitbucket-datacenter.md +++ b/docs/content/docs/providers/bitbucket-datacenter.md @@ -63,6 +63,7 @@ Create a webhook on the repository following this guide: - 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 0833c041a3..af52934a7b 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", "pr:merged", "pr:modified"}) { + 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 ad743d4b81..af5a18cde7 100644 --- a/pkg/provider/bitbucketdatacenter/detect_test.go +++ b/pkg/provider/bitbucketdatacenter/detect_test.go @@ -124,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 f5f4cd043c..756357f662 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", "pr:merged", "pr:modified"}) { + 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:merged", "pr:modified", + "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) }