From 6d284379349794ad8939842e4067828aaab86cb9 Mon Sep 17 00:00:00 2001 From: jolheiser Date: Wed, 13 May 2026 15:14:24 -0500 Subject: [PATCH] feat: allow admins to extend default pipeline config paths Signed-off-by: jolheiser --- cmd/server/flags.go | 8 ++++++++ cmd/server/setup.go | 4 ++++ server/services/config/forge.go | 2 +- shared/constant/constant.go | 4 ++-- 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/cmd/server/flags.go b/cmd/server/flags.go index 2638bf5f7..ecfdb5d5f 100644 --- a/cmd/server/flags.go +++ b/cmd/server/flags.go @@ -289,6 +289,14 @@ var flags = append([]cli.Flag{ Name: "config-extension-netrc", Usage: "whether global configuration extension should receive netrc data", }, + &cli.StringSliceFlag{ + Sources: cli.EnvVars("WOODPECKER_EXTRA_DEFAULT_PIPELINE_CONFIGS"), + Name: "extra-default-pipeline-configs", + Usage: "extra default pipeline config paths to check", + Config: cli.StringConfig{ + TrimSpace: true, + }, + }, &cli.StringFlag{ Sources: cli.EnvVars("WOODPECKER_REGISTRY_EXTENSION_ENDPOINT"), Name: "registry-extension-endpoint", diff --git a/cmd/server/setup.go b/cmd/server/setup.go index 6e8bb194c..5e74fbaf4 100644 --- a/cmd/server/setup.go +++ b/cmd/server/setup.go @@ -45,6 +45,7 @@ import ( "go.woodpecker-ci.org/woodpecker/v3/server/store" "go.woodpecker-ci.org/woodpecker/v3/server/store/datastore" "go.woodpecker-ci.org/woodpecker/v3/server/store/types" + "go.woodpecker-ci.org/woodpecker/v3/shared/constant" ) const ( @@ -158,6 +159,9 @@ func setupJWTSecret(_store store.Store) (string, error) { } func setupEvilGlobals(ctx context.Context, c *cli.Command, s store.Store) (err error) { + // default config paths + constant.DefaultConfigOrder = append(constant.DefaultConfigOrder, c.StringSlice("extra-default-pipeline-configs")...) + // services server.Config.Services.Logs = logging.New() server.Config.Services.Membership = setupMembershipService(ctx, s) diff --git a/server/services/config/forge.go b/server/services/config/forge.go index 57bf040e8..aee3ad7c2 100644 --- a/server/services/config/forge.go +++ b/server/services/config/forge.go @@ -97,7 +97,7 @@ func (f *forgeFetcherContext) fetch(c context.Context, config string) ([]*types. log.Trace().Msgf("configFetcher[%s]: user did not define own config, following default procedure", f.repo.FullName) // for the order see shared/constants/constants.go - fileMetas, err := f.getFirstAvailableConfig(ctx, constant.DefaultConfigOrder[:]) + fileMetas, err := f.getFirstAvailableConfig(ctx, constant.DefaultConfigOrder) if err == nil { return fileMetas, nil } diff --git a/shared/constant/constant.go b/shared/constant/constant.go index e56957b82..9de20ca53 100644 --- a/shared/constant/constant.go +++ b/shared/constant/constant.go @@ -16,9 +16,9 @@ package constant import "time" -// DefaultConfigOrder represent the priority in witch woodpecker search for a pipeline config by default +// DefaultConfigOrder represent the priority in which woodpecker searches for a pipeline config by default // folders are indicated by supplying a trailing slash. -var DefaultConfigOrder = [...]string{ +var DefaultConfigOrder = []string{ ".woodpecker/", ".woodpecker.yaml", ".woodpecker.yml", base-commit: 48e1ece20057e59de4e8e3fe25fc1f3a41e8a020 -- 2.50.1