From 37f1cdc0e9579d1b66b4bcff72ebb7a8e7d2524b Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Thu, 23 Oct 2025 12:53:59 +0200 Subject: [PATCH] Bitbucket: ignore push hooks with no changes propperly (#5672) --- server/forge/bitbucket/parse.go | 4 ++-- server/forge/bitbucket/parse_test.go | 2 +- server/forge/bitbucketdatacenter/parse.go | 3 ++- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/server/forge/bitbucket/parse.go b/server/forge/bitbucket/parse.go index 7f8b6710b..f27d20f0d 100644 --- a/server/forge/bitbucket/parse.go +++ b/server/forge/bitbucket/parse.go @@ -56,7 +56,7 @@ func parseHook(r *http.Request) (*model.Repo, *model.Pipeline, error) { } // parsePushHook parses a push hook and returns the Repo and Pipeline details. -// If the commit type is unsupported nil values are returned. +// If the commit type is unsupported it returns an ErrIgnoreEvent error. func parsePushHook(payload []byte) (*model.Repo, *model.Pipeline, error) { hook := internal.PushHook{} @@ -71,7 +71,7 @@ func parsePushHook(payload []byte) (*model.Repo, *model.Pipeline, error) { } return convertRepo(&hook.Repo, &internal.RepoPerm{}), convertPushHook(&hook, &change), nil } - return nil, nil, nil + return nil, nil, &types.ErrIgnoreEvent{Event: "push", Reason: "BB reports no Changes"} } // parsePullHook parses a pull request hook and returns the Repo and Pipeline diff --git a/server/forge/bitbucket/parse_test.go b/server/forge/bitbucket/parse_test.go index f0afb5102..9ba46a2e2 100644 --- a/server/forge/bitbucket/parse_test.go +++ b/server/forge/bitbucket/parse_test.go @@ -107,7 +107,7 @@ func Test_parseHook(t *testing.T) { r, b, err := parseHook(req) assert.Nil(t, r) assert.Nil(t, b) - assert.NoError(t, err) + assert.ErrorIs(t, err, &types.ErrIgnoreEvent{}) }) t.Run("push hook", func(t *testing.T) { diff --git a/server/forge/bitbucketdatacenter/parse.go b/server/forge/bitbucketdatacenter/parse.go index 8b5fe8253..75622e0db 100644 --- a/server/forge/bitbucketdatacenter/parse.go +++ b/server/forge/bitbucketdatacenter/parse.go @@ -6,6 +6,7 @@ import ( bb "github.com/neticdk/go-bitbucket/bitbucket" + "go.woodpecker-ci.org/woodpecker/v3/server/forge/types" "go.woodpecker-ci.org/woodpecker/v3/server/model" ) @@ -35,7 +36,7 @@ func parseHook(r *http.Request, baseURL string) (*HookResult, error) { result.Repo = convertRepo(&e.PullRequest.Target.Repository, nil, "") result.Pipeline = convertPullRequestEvent(e, baseURL) default: - return nil, fmt.Errorf("unsupported webhook event type: %T", e) + return nil, &types.ErrIgnoreEvent{Event: fmt.Sprintf("%T", e), Reason: "unsupported webhook event type"} } return result, nil