diff --git a/pkg/app/piped/cloudprovider/kubernetes/kubernetes.go b/pkg/app/piped/cloudprovider/kubernetes/kubernetes.go index 69a2a6806c..667558c6ee 100644 --- a/pkg/app/piped/cloudprovider/kubernetes/kubernetes.go +++ b/pkg/app/piped/cloudprovider/kubernetes/kubernetes.go @@ -85,11 +85,12 @@ var ( ) type provider struct { - appName string - appDir string - repoDir string - input config.KubernetesDeploymentInput - logger *zap.Logger + appName string + appDir string + repoDir string + configFileName string + input config.KubernetesDeploymentInput + logger *zap.Logger kubectl *Kubectl kustomize *Kustomize @@ -111,18 +112,19 @@ func initSharedGitClient(logger *zap.Logger) error { return err } -func NewProvider(appName, appDir, repoDir string, input config.KubernetesDeploymentInput, logger *zap.Logger) Provider { +func NewProvider(appName, appDir, repoDir, configFileName string, input config.KubernetesDeploymentInput, logger *zap.Logger) Provider { return &provider{ - appName: appName, - appDir: appDir, - repoDir: repoDir, - input: input, - logger: logger.Named("kubernetes-provider"), + appName: appName, + appDir: appDir, + repoDir: repoDir, + configFileName: configFileName, + input: input, + logger: logger.Named("kubernetes-provider"), } } -func NewManifestLoader(appName, appDir, repoDir string, input config.KubernetesDeploymentInput, logger *zap.Logger) ManifestLoader { - return NewProvider(appName, appDir, repoDir, input, logger) +func NewManifestLoader(appName, appDir, repoDir, configFileName string, input config.KubernetesDeploymentInput, logger *zap.Logger) ManifestLoader { + return NewProvider(appName, appDir, repoDir, configFileName, input, logger) } func (p *provider) init(ctx context.Context) { @@ -195,7 +197,7 @@ func (p *provider) LoadManifests(ctx context.Context) (manifests []Manifest, err manifests, err = ParseManifests(data) case TemplatingMethodNone: - manifests, err = LoadPlainYAMLManifests(ctx, p.appDir, p.input.Manifests) + manifests, err = LoadPlainYAMLManifests(p.appDir, p.input.Manifests, p.configFileName) default: err = fmt.Errorf("unsupport templating method %v", p.templatingMethod) diff --git a/pkg/app/piped/cloudprovider/kubernetes/manifest.go b/pkg/app/piped/cloudprovider/kubernetes/manifest.go index cd5dd57e81..e651b5fd84 100644 --- a/pkg/app/piped/cloudprovider/kubernetes/manifest.go +++ b/pkg/app/piped/cloudprovider/kubernetes/manifest.go @@ -15,7 +15,6 @@ package kubernetes import ( - "context" "encoding/json" "fmt" "io/ioutil" @@ -159,7 +158,7 @@ func ParseFromStructuredObject(s interface{}) (Manifest, error) { }, nil } -func LoadPlainYAMLManifests(ctx context.Context, dir string, names []string) ([]Manifest, error) { +func LoadPlainYAMLManifests(dir string, names []string, configFileName string) ([]Manifest, error) { // If no name was specified we have to walk the app directory to collect the manifest list. if len(names) == 0 { err := filepath.Walk(dir, func(path string, f os.FileInfo, err error) error { @@ -176,10 +175,12 @@ func LoadPlainYAMLManifests(ctx context.Context, dir string, names []string) ([] if ext != ".yaml" && ext != ".yml" && ext != ".json" { return nil } - // TODO: Allow to check other than default configuration name too if f.Name() == model.DefaultDeploymentConfigFileName { return nil } + if f.Name() == configFileName { + return nil + } names = append(names, f.Name()) return nil }) diff --git a/pkg/app/piped/driftdetector/kubernetes/detector.go b/pkg/app/piped/driftdetector/kubernetes/detector.go index 75c4deae3a..a3b0c8b5a0 100644 --- a/pkg/app/piped/driftdetector/kubernetes/detector.go +++ b/pkg/app/piped/driftdetector/kubernetes/detector.go @@ -307,7 +307,7 @@ func (d *detector) loadHeadManifests(ctx context.Context, app *model.Application err = fmt.Errorf("failed to load deployment configuration: %w", err) return nil, err } - loader := provider.NewManifestLoader(app.Name, appDir, repoDir, cfg.KubernetesDeploymentSpec.Input, d.logger) + loader := provider.NewManifestLoader(app.Name, appDir, repoDir, app.GitPath.ConfigFilename, cfg.KubernetesDeploymentSpec.Input, d.logger) manifests, err = loader.LoadManifests(ctx) if err != nil { err = fmt.Errorf("failed to load new manifests: %w", err) diff --git a/pkg/app/piped/executor/kubernetes/kubernetes.go b/pkg/app/piped/executor/kubernetes/kubernetes.go index e3e9d408a6..fd23797464 100644 --- a/pkg/app/piped/executor/kubernetes/kubernetes.go +++ b/pkg/app/piped/executor/kubernetes/kubernetes.go @@ -78,7 +78,7 @@ func (e *Executor) Execute(sig executor.StopSignal) model.StageStatus { ctx = sig.Context() appDir = filepath.Join(e.RepoDir, e.Deployment.GitPath.Path) ) - e.provider = provider.NewProvider(e.Deployment.ApplicationName, appDir, e.RepoDir, e.config.Input, e.Logger) + e.provider = provider.NewProvider(e.Deployment.ApplicationName, appDir, e.RepoDir, e.Deployment.GitPath.ConfigFilename, e.config.Input, e.Logger) e.Logger.Info("start executing kubernetes stage", zap.String("stage-name", e.Stage.Name), @@ -163,7 +163,7 @@ func (e *Executor) loadRunningManifests(ctx context.Context) (manifests []provid // When the manifests were not in the cache we have to load them. var ( appDir = filepath.Join(e.RepoDir, e.Deployment.GitPath.Path) - p = provider.NewProvider(e.Deployment.ApplicationName, appDir, e.RunningRepoDir, e.config.Input, e.Logger) + p = provider.NewProvider(e.Deployment.ApplicationName, appDir, e.RunningRepoDir, e.Deployment.GitPath.ConfigFilename, e.config.Input, e.Logger) ) manifests, err = p.LoadManifests(ctx) if err != nil { diff --git a/pkg/app/piped/planner/kubernetes/kubernetes.go b/pkg/app/piped/planner/kubernetes/kubernetes.go index 5e9bca17f9..7acb019ed9 100644 --- a/pkg/app/piped/planner/kubernetes/kubernetes.go +++ b/pkg/app/piped/planner/kubernetes/kubernetes.go @@ -64,7 +64,7 @@ func (p *Planner) Plan(ctx context.Context, in planner.Input) (out planner.Outpu newManifests, ok := manifestCache.Get(in.Deployment.Trigger.Commit.Hash) if !ok { // When the manifests were not in the cache we have to load them. - loader := provider.NewManifestLoader(in.Deployment.ApplicationName, in.AppDir, in.RepoDir, cfg.Input, in.Logger) + loader := provider.NewManifestLoader(in.Deployment.ApplicationName, in.AppDir, in.RepoDir, in.Deployment.GitPath.ConfigFilename, cfg.Input, in.Logger) newManifests, err = loader.LoadManifests(ctx) if err != nil { err = fmt.Errorf("failed to load new manifests: %w", err) @@ -139,7 +139,7 @@ func (p *Planner) Plan(ctx context.Context, in planner.Input) (out planner.Outpu oldManifests, ok := manifestCache.Get(in.MostRecentSuccessfulCommitHash) if !ok { // When the manifests were not in the cache we have to load them. - loader := provider.NewManifestLoader(in.Deployment.ApplicationName, in.AppDir, in.RepoDir, cfg.Input, in.Logger) + loader := provider.NewManifestLoader(in.Deployment.ApplicationName, in.AppDir, in.RepoDir, in.Deployment.GitPath.ConfigFilename, cfg.Input, in.Logger) oldManifests, err = loader.LoadManifests(ctx) if err != nil { err = fmt.Errorf("failed to load previously deployed manifests: %w", err)