From 116331d80d4b99b21466c4d949ef6d98796809c9 Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Thu, 23 Oct 2025 11:32:13 +0200 Subject: [PATCH 1/3] Bitbucket: ignore push hooks with no changes propperly --- server/forge/bitbucket/parse.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/forge/bitbucket/parse.go b/server/forge/bitbucket/parse.go index 7f8b6710b86..f27d20f0dc2 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 From ec3b89605267030ca03b589107aa3a424ee1442f Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Thu, 23 Oct 2025 11:33:10 +0200 Subject: [PATCH 2/3] BitbucketCloud: error handling nit --- server/forge/bitbucketdatacenter/parse.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/server/forge/bitbucketdatacenter/parse.go b/server/forge/bitbucketdatacenter/parse.go index 8b5fe825377..75622e0db85 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 From d4671aee9ea10c8e3cf7fb727ac8bc85c2ffddc6 Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Thu, 23 Oct 2025 11:49:21 +0200 Subject: [PATCH 3/3] adjust test --- server/forge/bitbucket/parse_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/forge/bitbucket/parse_test.go b/server/forge/bitbucket/parse_test.go index f0afb510287..9ba46a2e259 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) {