{"record":{"id":"bd847210bf3b576b","repo":"GoogleContainerTools/skaffold","slug":"invalid-skaffold-config-w","errorCode":null,"errorMessage":"invalid skaffold config: %w","messagePattern":"invalid skaffold config: %w","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cmd/skaffold/app/cmd/runner.go","lineNumber":88,"sourceCode":"\tinstrumentation.Init(v2Configs, opts.User, runCtx.GetKubeContext())\n\thooks.SetupStaticEnvOptions(runCtx)\n\trunner, err := runner.NewForConfig(ctx, runCtx)\n\tif err != nil {\n\t\tevent.InititializationFailed(err)\n\t\treturn nil, nil, nil, fmt.Errorf(\"creating runner: %w\", err)\n\t}\n\treturn runner, configs, runCtx, nil\n}\n\nfunc runContext(ctx context.Context, out io.Writer, opts config.SkaffoldOptions) (*runcontext.RunContext, []util.VersionedConfig, error) {\n\tcfgSet, err := withFallbackConfig(ctx, out, opts, parser.GetConfigSet)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tsetDefaultRendererAndDeployer(cfgSet)\n\n\tif err := validation.Process(cfgSet, validation.GetValidationOpts(opts)); err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"invalid skaffold config: %w\", err)\n\t}\n\tvar configs []util.VersionedConfig\n\tfor _, cfg := range cfgSet {\n\t\tconfigs = append(configs, cfg.SkaffoldConfig)\n\t}\n\n\trunCtx, err := runcontext.GetRunContext(ctx, opts, configs)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"getting run context: %w\", err)\n\t}\n\n\tif err := validation.ProcessWithRunContext(ctx, runCtx); err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"invalid skaffold config: %w\", err)\n\t}\n\n\treturn runCtx, configs, nil\n}\n","sourceCodeStart":70,"sourceCodeEnd":106,"githubUrl":"https://github.com/GoogleContainerTools/skaffold/blob/a1189de023efc32d4b8e11f395acc678aa555011/cmd/skaffold/app/cmd/runner.go#L70-L106","documentation":"The loaded skaffold configuration set failed static validation (validation.Process). Skaffold checks schema-level and semantic correctness (e.g. required fields, mutually exclusive options) before building a runner.","triggerScenarios":"Running any command that loads config when validation.Process reports problems: missing required fields, invalid profiles, conflicting build/deploy definitions in skaffold.yaml or its included configs.","commonSituations":"Typo in artifact fields; profile referencing a nonexistent artifact; multiple configs merged via dependencies that violate schema rules; hand-edited skaffold.yaml with invalid YAML structure.","solutions":["Read the validation messages wrapped after 'invalid skaffold config:' - they list each offending field","Fix the reported fields in skaffold.yaml","Run `skaffold inspect` or `skaffold fix` to lint/migrate the config","If using multi-config, validate each dependency config individually"],"exampleFix":"// before\nbuild:\n  artifacts: []\n// after\nbuild:\n  artifacts:\n    - image: my-app\n      context: .","handlingStrategy":"validation","validationCode":"skaffold diagnose || echo 'config failed static validation'","typeGuard":null,"tryCatchPattern":"_, _, _, err := createNewRunner(ctx, out, opts)\nif err != nil && strings.Contains(err.Error(), \"invalid skaffold config\") {\n\t// validation messages are wrapped - print full error chain\n\tfmt.Fprintf(os.Stderr, \"%+v\\n\", err)\n\tos.Exit(1)\n}","preventionTips":["Commit a validated skaffold.yaml and lint it in CI with `skaffold diagnose`","Avoid hand-editing: generate/modify configs with skaffold commands where possible","Validate profile definitions exist before referencing them with -p","Keep multi-config dependency chains schema-consistent"],"tags":["skaffold","config","validation","yaml"],"backgroundTag":"skaffold-config-validation-failed","analyzedSha":"a1189de023efc32d4b8e11f395acc678aa555011","analyzedAt":"2026-09-05T12:09:27.064Z","contentChangedAt":"2026-09-05T12:09:27.064Z","schemaVersion":2},"datasetVersion":"2026-09-12T17:17:11.597Z"}