{"record":{"id":"7f37e2a72bbaf275","repo":"theonedev/onedev","slug":"no-applicable-provisioner-discovered-for-current-w","errorCode":null,"errorMessage":"No applicable provisioner discovered for current workspace. Please check if docker is installed on OneDev server, or configure a kubernetes provisioner if you would like workspaces to run as pods","messagePattern":"No applicable provisioner discovered for current workspace\\. Please check if docker is installed on OneDev server, or configure a kubernetes provisioner if you would like workspaces to run as pods","errorType":"exception","errorClass":"ExplicitException","httpStatus":null,"severity":"error","filePath":"server-core/src/main/java/io/onedev/server/workspace/DefaultWorkspaceService.java","lineNumber":761,"sourceCode":"\t\t\telse if (!isApplicable(workspace, spec, provisioner))\n\t\t\t\tthrow new ExplicitException(\"Specified workspace provisioner '\" + spec.getProvisioner() + \"' is not applicable for current workspace\");\n\t\t\telse\n\t\t\t\treturn provisioner;\n\t\t} else if (!settingService.getWorkspaceProvisioners().isEmpty()) {\n\t\t\treturn settingService.getWorkspaceProvisioners().stream()\n\t\t\t\t.filter(it -> it.isEnabled() && isApplicable(workspace, spec, it))\n\t\t\t\t.findFirst()\n\t\t\t\t.orElseThrow(() -> new ExplicitException(\"No applicable workspace provisioner\"));\n\t\t} else {\n\t\t\tlogger.log(\"No workspace provisioner defined, auto-discovering...\");\n\t\t\tvar provisioner = discoverProvisioner(workspace, spec);\n\t\t\tif (provisioner != null) {\n\t\t\t\tlogger.log(\"Discovered \" + EditableUtils.getDisplayName(provisioner.getClass()).toLowerCase());\n\t\t\t\treturn provisioner;\n\t\t\t}\n\n\t\t\tif (spec.isRunInContainer()) {\n\t\t\t\tthrow new ExplicitException(\"\"\"\n\t\t\t\t\tNo applicable provisioner discovered for current workspace. \\\n\t\t\t\t\tPlease check if docker is installed on OneDev server, or configure \\\n\t\t\t\t\ta kubernetes provisioner if you would like workspaces to run as pods\"\"\");\n\t\t\t} else {\n\t\t\t\tthrow new ExplicitException(\"\"\"\n\t\t\t\t\tNo applicable provisioner discovered for current workspace. \\\n\t\t\t\t\tPlease add a shell provisioner in menu 'Administration / Workspace Provisioners'\"\"\");\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate Future<Void> run(Workspace workspace) {\n\t\tWorkspace.push(workspace);\n\t\ttry {\n\t\t\tvar spec = workspace.getSpec();\n\t\t\tif (spec == null)\n\t\t\t\tthrow new ExplicitException(\"Spec not found in workspace project hierarchy\");\n","sourceCodeStart":743,"sourceCodeEnd":779,"githubUrl":"https://github.com/theonedev/onedev/blob/d44925c47c37992c828ea673a5f9620539bc3ff2/server-core/src/main/java/io/onedev/server/workspace/DefaultWorkspaceService.java#L743-L779","documentation":"When no provisioner is explicitly named, DefaultWorkspaceService auto-discovers an applicable enabled provisioner (docker or kubernetes). If none is found and the spec requires running in a container (spec.isRunInContainer()), it throws this ExplicitException telling you to install docker or configure a kubernetes provisioner.","triggerScenarios":"Job spec has runInContainer: true; no named provisioner; no applicable docker provisioner (docker absent/unavailable on server) and no kubernetes provisioner configured/enabled.","commonSituations":"Fresh OneDev install without docker; docker daemon not running or inaccessible to OneDev user; kubernetes provisioner misconfigured/disabled; running in a container environment without docker socket access.","solutions":["Install docker on the OneDev server and ensure the OneDev process can access it (docker group/permissions).","Configure and enable a Kubernetes workspace provisioner in Administration > Workspace Provisioners.","If container execution is not needed, set runInContainer: false in the job spec so the shell provisioner path applies."],"exampleFix":"// before (job YAML)\nrunInContainer: true   # no docker / no k8s provisioner\n// after\n# either install docker on server, or:\nrunInContainer: false","handlingStrategy":"fallback","validationCode":"// shell out or health-check docker before dispatching container jobs: docker info","typeGuard":null,"tryCatchPattern":"try { provision(...); } catch (ExplicitException e) { if (e.getMessage().contains(\"No applicable provisioner\")) { /* install docker or configure k8s provisioner */ } }","preventionTips":["Ensure docker is installed and accessible on the server before enabling container jobs.","Pre-configure a kubernetes provisioner for pod-based workspaces.","Health-check the docker daemon as part of server monitoring."],"tags":["provisioner","docker","kubernetes","configuration"],"backgroundTag":"missing-configuration","analyzedSha":"d44925c47c37992c828ea673a5f9620539bc3ff2","analyzedAt":"2026-09-06T07:18:27.995Z","contentChangedAt":"2026-09-06T07:18:27.995Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}