GoogleContainerTools/skaffold · error
creating tester: %w
Error message
creating tester: %w
What it means
During runner construction, `getTester` assembles the test steps (custom, structure, container tests) from each pipeline. This error wraps any failure creating that tester component, aborting `NewForConfig` before any build/test runs.
Source
Thrown at pkg/skaffold/runner/new.go:72
if err != nil {
endTrace(instrumentation.TraceEndError(err))
return nil, fmt.Errorf("creating tagger: %w", err)
}
store := build.NewArtifactStore()
g := graph.ToArtifactGraph(runCtx.Artifacts())
sourceDependencies := graph.NewSourceDependenciesCache(runCtx, store, g)
isLocalImage := func(imageName string) (bool, error) {
return isImageLocal(runCtx, imageName)
}
// Always add skaffold-specific labels, except during `skaffold render`
labeller := label.NewLabeller(runCtx.AddSkaffoldLabels(), runCtx.CustomLabels(), runCtx.GetRunID())
tester, err := getTester(ctx, runCtx, isLocalImage)
if err != nil {
endTrace(instrumentation.TraceEndError(err))
return nil, fmt.Errorf("creating tester: %w", err)
}
var deployer deploy.Deployer
hydrationDir, err := util.GetHydrationDir(runCtx.Opts, runCtx.WorkingDir, true, isKptRendererOrDeployerUsed(runCtx.Pipelines))
if err != nil {
return nil, fmt.Errorf("getting render output path: %w", err)
}
renderer, err := GetRenderer(ctx, runCtx, hydrationDir, labeller.Labels(), runCtx.UsingLegacyHelmDeploy())
if err != nil {
endTrace(instrumentation.TraceEndError(err))
return nil, fmt.Errorf("creating renderer: %w", err)
}
deployer, err = GetDeployer(ctx, runCtx, labeller, hydrationDir, runCtx.UsingLegacyHelmDeploy())
if err != nil {
endTrace(instrumentation.TraceEndError(err))View on GitHub (pinned to a1189de023)
Solutions
- Check the inner error; fix the `test:` section of skaffold.yaml accordingly.
- Verify every structure-test config file path exists and is readable.
- Run `skaffold diagnose` to catch schema errors.
- If upgrading skaffold, check release notes for changed/removed test config fields and update the schema version (`apiVersion:`) accordingly.
Example fix
// skaffold.yaml before
test:
- image: app
structureTests:
- ./missing-config.yaml
// after
test:
- image: app
structureTests:
- ./test/structure.yaml Defensive patterns
Strategy: validation
Validate before calling
for _, t := range cfg.Test {
for _, f := range t.StructureTests {
if _, err := os.Stat(f); err != nil {
return fmt.Errorf("structure test config %q: %w", f, err)
}
}
} Try / catch
runner, err := runner.NewForConfig(runCtx)
if err != nil {
if strings.Contains(err.Error(), "creating tester") {
return fmt.Errorf("skaffold.yaml test config invalid: %w", err)
}
return err
} Prevention
- Keep structure-test config files in-repo and verify paths with `skaffold diagnose`.
- Pin `apiVersion` in skaffold.yaml and update it deliberately on upgrades.
- Lint skaffold.yaml in CI with the current schema.
When it happens
Trigger: A skaffold.yaml `test` stanza references a configuration that fails validation when the tester is constructed: e.g. an invalid test image reference, unsupported test type, or malformed v2 test config (`structureTests` pointing at unreadable config files).
Common situations: Structure test config files listed in skaffold.yaml that don't exist; deprecated/renamed test fields after upgrading skaffold; invalid YAML types in the test section.
Related errors
- unexpected artifact type %q: %s
- image %q context %q is not a directory
- creating tagger: %w
- bucket name is empty
- INSPECT_PROFILE_NOT_FOUND_ERR
AI-assisted analysis of GoogleContainerTools/skaffold@a1189de023 (2026-09-05).
Data as JSON: /api/errors/b302473078a384d5.
Report an issue: GitHub.