From 3e81ab3d3964f73796bfb401a26487e660490591 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20St=C3=A4bler?= Date: Wed, 29 Apr 2026 10:01:27 +0200 Subject: [PATCH] Ensure git clone base directory exists on startup Create /git-repos directory in NewManager() if it doesn't exist, providing a safety net for environments where the emptyDir volume mount may not be configured. --- cmd/main.go | 8 +++++++- internal/git/manager.go | 7 +++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/cmd/main.go b/cmd/main.go index a87a7d0..4e47997 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -348,12 +348,18 @@ func main() { } setupLog.Info("Func CLI is ready") + gitManager, err := git.NewManager() + if err != nil { + setupLog.Error(err, "failed to initialize git manager") + os.Exit(1) + } + if err := (&controller.FunctionReconciler{ Client: mgr.GetClient(), Scheme: mgr.GetScheme(), Recorder: mgr.GetEventRecorder("functions-controller"), FuncCliManager: funcCLIManager, - GitManager: git.NewManager(), + GitManager: gitManager, OperatorNamespace: operatorNamespace, }).SetupWithManager(mgr); err != nil { setupLog.Error(err, "unable to create controller", "controller", "Function") diff --git a/internal/git/manager.go b/internal/git/manager.go index 337cce5..9ad9645 100644 --- a/internal/git/manager.go +++ b/internal/git/manager.go @@ -23,8 +23,11 @@ type Manager interface { CloneRepository(ctx context.Context, url, subPath, reference string, auth map[string][]byte) (*Repository, error) } -func NewManager() Manager { - return &managerImpl{} +func NewManager() (Manager, error) { + if err := os.MkdirAll(cloneBaseDir, 0755); err != nil { + return nil, fmt.Errorf("failed to create git clone base directory: %w", err) + } + return &managerImpl{}, nil } type managerImpl struct{}