{"record":{"id":"c02b13543f7aa840","repo":"quarkusio/quarkus","slug":"can-t-find-generated-kubernetes-manifest","errorCode":null,"errorMessage":"Can't find generated kubernetes manifest: ","messagePattern":"Can't find generated kubernetes manifest: ","errorType":"exception","errorClass":"IllegalStateException","httpStatus":null,"severity":"error","filePath":"extensions/kubernetes/vanilla/deployment/src/main/java/io/quarkus/kubernetes/deployment/KubernetesDeployer.java","lineNumber":231,"sourceCode":"                Optional<HasMetadata> existing = Optional.ofNullable(client.resource(i).get());\n                checkLabelSelectorVersions(deploymentTarget, i, existing);\n            });\n\n            list.getItems().stream().filter(distinctByResourceKey()).forEach(i -> {\n                deployResource(deploymentTarget, client, i, optionalResourceDefinitions);\n                log.info(\"Applied: \" + i.getKind() + \" \" + i.getMetadata().getName() + \".\");\n            });\n\n            printExposeInformation(client, list, openshiftConfig, applicationInfo);\n\n            HasMetadata m = list.getItems().stream()\n                    .filter(r -> deploymentTarget.getDeploymentResourceKind().matches(r))\n                    .findFirst().orElseThrow(() -> new IllegalStateException(\n                            \"No \" + deploymentTarget.getDeploymentResourceKind() + \" found under: \"\n                                    + manifest.getAbsolutePath()));\n            return new DeploymentResultBuildItem(m.getMetadata().getName(), m.getMetadata().getLabels());\n        } catch (FileNotFoundException e) {\n            throw new IllegalStateException(\"Can't find generated kubernetes manifest: \" + manifest.getAbsolutePath());\n        } catch (KubernetesClientException e) {\n            KubernetesClientErrorHandler.handle(e);\n            throw e;\n        } catch (IOException e) {\n            throw new RuntimeException(\"Error closing file: \" + manifest.getAbsolutePath());\n        }\n\n    }\n\n    private void deployResource(DeploymentTargetEntry deploymentTarget, KubernetesClient client, HasMetadata metadata,\n            List<KubernetesOptionalResourceDefinitionBuildItem> optionalResourceDefinitions) {\n        var r = findResource(client, metadata);\n        Optional<HasMetadata> existing = Optional.ofNullable(client.resource(metadata).get());\n        if (shouldDeleteExisting(deploymentTarget, metadata)) {\n            deleteResource(metadata, r);\n        }\n\n        try {","sourceCodeStart":213,"sourceCodeEnd":249,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/extensions/kubernetes/vanilla/deployment/src/main/java/io/quarkus/kubernetes/deployment/KubernetesDeployer.java#L213-L249","documentation":"After generating manifests, KubernetesDeployer.deploy reads the generated YAML and locates the resource matching the deployment target's DeploymentResourceKind. If the manifest file itself cannot be opened (FileNotFoundException), it throws IllegalStateException 'Can't find generated kubernetes manifest: <path>'.","triggerScenarios":"deploy() attempts to open the kubernetes.yml/openshift.yml under target/kubernetes (or the configured output directory) but the file does not exist at deploy time.","commonSituations":"Running -Dquarkus.kubernetes.deploy=true on a build where manifest generation was skipped (quarkus.kubernetes.generate-manifest=false); deploying from a different working directory; stale target directory cleaned between generation and deploy; wrong quarkus.kubernetes.output-directory.","solutions":["Ensure manifest generation is enabled (quarkus.kubernetes.generate-manifest defaults to true; do not set false when deploying)","Run the full build (mvn clean package -Dquarkus.kubernetes.deploy=true) so generation and deploy happen in the same run","Check quarkus.kubernetes.output-directory points to the folder containing the generated manifest (default target/kubernetes)"],"exampleFix":"// before\nquarkus.kubernetes.generate-manifest=false\nquarkus.kubernetes.deploy=true\n// after\nquarkus.kubernetes.generate-manifest=true\nquarkus.kubernetes.deploy=true","handlingStrategy":"validation","validationCode":"java.nio.file.Path manifest = Path.of(\"target/kubernetes/kubernetes.yml\");\nif (!java.nio.file.Files.exists(manifest)) throw new IllegalStateException(\"Manifest not generated; run full build with quarkus.kubernetes.deploy=true\");","typeGuard":null,"tryCatchPattern":"try { deploy(manifestFile); } catch (IllegalStateException e) {\n    if (e.getMessage().startsWith(\"Can't find generated kubernetes manifest\")) {\n        LOG.error(\"Rebuild: manifest generation must run in the same build as deploy\");\n    }\n    throw e;\n}","preventionTips":["Run generation and deploy in the same mvn command","Leave quarkus.kubernetes.generate-manifest at its default (true) when deploying","Verify quarkus.kubernetes.output-directory matches where the manifest lands"],"tags":["kubernetes","manifest","file-not-found","deploy"],"backgroundTag":"generated-manifest-missing","analyzedSha":"e1c734241f34c7919086ceb4c9262b4a58f6de44","analyzedAt":"2026-09-05T17:01:29.979Z","contentChangedAt":"2026-09-05T17:01:29.979Z","schemaVersion":2},"datasetVersion":"2026-09-12T22:17:10.623Z"}