From baf2e645bcff14abb3b441c36cd809f010ef0989 Mon Sep 17 00:00:00 2001 From: Lukas Date: Wed, 7 Feb 2024 01:24:08 +0100 Subject: [PATCH] Ignore gitlab push events without commits (#3339) Example of the resulting buggy pipeline: ![image](https://github.com/woodpecker-ci/woodpecker/assets/32853499/1e4bedc6-465b-466e-8d89-a7348e374c7f) --- server/forge/gitlab/gitlab.go | 3 +++ server/forge/types/errors.go | 5 +++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/server/forge/gitlab/gitlab.go b/server/forge/gitlab/gitlab.go index 53c10a24d..d46848487 100644 --- a/server/forge/gitlab/gitlab.go +++ b/server/forge/gitlab/gitlab.go @@ -655,6 +655,9 @@ func (g *GitLab) Hook(ctx context.Context, req *http.Request) (*model.Repo, *mod return repo, pipeline, nil case *gitlab.PushEvent: + if event.TotalCommitsCount == 0 { + return nil, nil, &forge_types.ErrIgnoreEvent{Event: string(eventType), Reason: "no commits"} + } return convertPushHook(event) case *gitlab.TagEvent: return convertTagHook(event) diff --git a/server/forge/types/errors.go b/server/forge/types/errors.go index 8a11be5f0..2da1262ae 100644 --- a/server/forge/types/errors.go +++ b/server/forge/types/errors.go @@ -46,11 +46,12 @@ var _ error = new(AuthError) var ErrNotImplemented = errors.New("not implemented") type ErrIgnoreEvent struct { - Event string + Event string + Reason string } func (err *ErrIgnoreEvent) Error() string { - return fmt.Sprintf("explicit ignored event '%s'", err.Event) + return fmt.Sprintf("explicit ignored event '%s', reason: %s", err.Event, err.Reason) } func (*ErrIgnoreEvent) Is(target error) bool {