Home

jsonnetpecker @main - refs - log -
-
https://git.jolheiser.com/jsonnetpecker.git
Woodpecker config service for jsonnet
jsonnetpecker / jsonnet.patch
- raw -
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
From 6d284379349794ad8939842e4067828aaab86cb9 Mon Sep 17 00:00:00 2001
From: jolheiser <git@jolheiser.com>
Date: Wed, 13 May 2026 15:14:24 -0500
Subject: [PATCH] feat: allow admins to extend default pipeline config paths

Signed-off-by: jolheiser <git@jolheiser.com>
---
 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