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

  1. Check the inner error; fix the `test:` section of skaffold.yaml accordingly.
  2. Verify every structure-test config file path exists and is readable.
  3. Run `skaffold diagnose` to catch schema errors.
  4. 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

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


AI-assisted analysis of GoogleContainerTools/skaffold@a1189de023 (2026-09-05). Data as JSON: /api/errors/b302473078a384d5. Report an issue: GitHub.