{"record":{"id":"587757493b238bee","repo":"GoogleContainerTools/skaffold","slug":"kpt-deployer-mixed-in-with-other-deployers-not-sup","errorCode":null,"errorMessage":"kpt deployer mixed in with other deployers not supported yet. Please use only kpt deployer","messagePattern":"kpt deployer mixed in with other deployers not supported yet\\. Please use only kpt deployer","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/skaffold/runner/deployer.go","lineNumber":200,"sourceCode":"\t\t\tdeployer, err := kubectl.NewDeployer(dCtx, labeller, d.KubectlDeploy, runCtx.Artifacts(), configName, gks)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\n\t\t\tdeployers = append(deployers, deployer)\n\t\t}\n\n\t\tif d.KptDeploy != nil {\n\t\t\tif d.KptDeploy.Dir == \"\" {\n\t\t\t\tlog.Entry(context.TODO()).Infof(\"manifests are deployed from render path %v\\n\", hydrationDir)\n\t\t\t\td.KptDeploy.Dir = hydrationDir\n\t\t\t}\n\t\t\tdeployer, err := kptV2.NewDeployer(dCtx, labeller, d.KptDeploy, runCtx.Opts, configName, gks)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tif len(deployers) > 0 {\n\t\t\t\treturn nil, fmt.Errorf(\"kpt deployer mixed in with other deployers not supported yet. Please use only kpt deployer\")\n\t\t\t}\n\t\t\tdeployers = append(deployers, deployer)\n\t\t}\n\t\tif d.CloudRunDeploy != nil {\n\t\t\tdeployer, err := getCloudRunDeployer(dCtx.RunContext, labeller, runCtx.DeployConfigs(), configName)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tdeployers = append(deployers, deployer)\n\t\t}\n\t}\n\n\tif localDeploy && remoteDeploy {\n\t\treturn nil, errors.New(\"docker deployment not supported alongside cluster deployments\")\n\t}\n\n\treturn deploy.NewDeployerMux(deployers, runCtx.IterativeStatusCheck()), nil\n}","sourceCodeStart":182,"sourceCodeEnd":218,"githubUrl":"https://github.com/GoogleContainerTools/skaffold/blob/a1189de023efc32d4b8e11f395acc678aa555011/pkg/skaffold/runner/deployer.go#L182-L218","documentation":"GetDeployer builds the deployer set from the skaffold.yaml `deploy:` configs. The kpt deployer cannot be combined with any other deployer, so if a kpt deployer was just created and any other deployer is already present in the list, this error is returned.","triggerScenarios":"A skaffold.yaml (or multi-config run) whose `deploy:` section defines `kptDeploy` alongside another deployer such as `kubectlDeploy`, `helmDeploy`, or `kustomizeDeploy`.","commonSituations":"Merging deploy configs from multiple profiles or `requires:` dependencies where one config uses kpt and another uses kubectl/helm.","solutions":["Keep only the `kpt` deployer in the `deploy:` section when using kpt","Move the kubectl/helm deployments into a separate profile or separate skaffold run","If kpt is only needed for some manifests, restructure configs so kpt is used exclusively per invocation"],"exampleFix":"// before (skaffold.yaml)\ndeploy:\n  kubectl: {}\n  kpt: {}\n// after\ndeploy:\n  kpt: {}","handlingStrategy":"validation","validationCode":"const deployers = ['kubectl','helm','kustomize','kpt'].filter(k => cfg.deploy?.[k])\nif (deployers.includes('kpt') && deployers.length > 1) {\n  throw new Error('kpt deployer cannot be combined with: ' + deployers.filter(d => d !== 'kpt').join(','))\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Use exactly one deployer per skaffold invocation","Isolate kpt-based deployments in a dedicated profile","Review merged configs from dependencies/profiles for stray deployer sections"],"tags":["deploy","config","kpt"],"backgroundTag":"conflicting-deployers","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"}