From a31752eb55a3b97ab4a2b6413ea3c88f66b01d7e Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Thu, 17 Aug 2023 14:46:22 +0200 Subject: [PATCH] Return 204 not 500 on filtered pipeline (#2230) the error check always failed, as the custom errors did not have the `Is(error) bool` interface implemented backport bugfix part of #2216 --- server/pipeline/create.go | 2 +- server/pipeline/errors.go | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/server/pipeline/create.go b/server/pipeline/create.go index a99f7669e..f4ac0864d 100644 --- a/server/pipeline/create.go +++ b/server/pipeline/create.go @@ -66,7 +66,7 @@ func Create(ctx context.Context, _store store.Store, repo *model.Repo, pipeline filtered, parseErr = checkIfFiltered(repo, pipeline, forgeYamlConfigs) if parseErr == nil { if filtered { - err := ErrFiltered{Msg: "branch does not match restrictions defined in yaml"} + err := ErrFiltered{Msg: "global when filter of all workflows do skip this pipeline"} log.Debug().Str("repo", repo.FullName).Msgf("%v", err) return nil, err } diff --git a/server/pipeline/errors.go b/server/pipeline/errors.go index fc403dff8..e9f2826f5 100644 --- a/server/pipeline/errors.go +++ b/server/pipeline/errors.go @@ -22,6 +22,14 @@ func (e ErrNotFound) Error() string { return e.Msg } +func (e ErrNotFound) Is(target error) bool { + _, ok := target.(ErrNotFound) //nolint:errorlint + if !ok { + _, ok = target.(*ErrNotFound) //nolint:errorlint + } + return ok +} + type ErrBadRequest struct { Msg string } @@ -30,6 +38,14 @@ func (e ErrBadRequest) Error() string { return e.Msg } +func (e ErrBadRequest) Is(target error) bool { + _, ok := target.(ErrBadRequest) //nolint:errorlint + if !ok { + _, ok = target.(*ErrBadRequest) //nolint:errorlint + } + return ok +} + type ErrFiltered struct { Msg string } @@ -37,3 +53,11 @@ type ErrFiltered struct { func (e ErrFiltered) Error() string { return "ignoring hook: " + e.Msg } + +func (e *ErrFiltered) Is(target error) bool { + _, ok := target.(ErrFiltered) //nolint:errorlint + if !ok { + _, ok = target.(*ErrFiltered) //nolint:errorlint + } + return ok +}