{"record":{"id":"29d771e10557156f","repo":"theonedev/onedev","slug":"no-applicable-provisioner-discovered-for-current-w-29d771","errorCode":null,"errorMessage":"No applicable provisioner discovered for current workspace. Please add a shell provisioner in menu 'Administration / Workspace Provisioners'","messagePattern":"No applicable provisioner discovered for current workspace\\. Please add a shell provisioner in menu 'Administration / Workspace Provisioners'","errorType":"exception","errorClass":"ExplicitException","httpStatus":null,"severity":"error","filePath":"server-core/src/main/java/io/onedev/server/workspace/DefaultWorkspaceService.java","lineNumber":766,"sourceCode":"\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\n\t\t\tvar interpolator = new WorkspaceVariableInterpolator(workspace);\n\t\t\tspec = interpolator.interpolateProperties(spec);\n\n\t\t\tString token = workspace.getToken();\n\t\t\tvar project = workspace.getProject();","sourceCodeStart":748,"sourceCodeEnd":784,"githubUrl":"https://github.com/theonedev/onedev/blob/d44925c47c37992c828ea673a5f9620539bc3ff2/server-core/src/main/java/io/onedev/server/workspace/DefaultWorkspaceService.java#L748-L784","documentation":"Same auto-discovery failure as the container case, but for specs that do not require a container: no applicable enabled provisioner was found and the guidance is to add a shell provisioner so workspaces can be provisioned on the server host.","triggerScenarios":"Job/workspace spec with runInContainer false (or unset); no named provisioner; no enabled shell provisioner (nor any other applicable provisioner) in Administration > Workspace Provisioners.","commonSituations":"Fresh OneDev install where default shell provisioner was deleted/disabled; workspace provisioners settings cleared; after migrating settings between instances.","solutions":["Add a Shell Workspace Provisioner in Administration > Workspace Provisioners.","Or enable/configure a docker/kubernetes provisioner if container execution is desired.","Restore previously removed/disabled provisioners in the settings."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"// via settings API: assert at least one enabled workspace provisioner exists before dispatching jobs","typeGuard":null,"tryCatchPattern":"try { provision(...); } catch (ExplicitException e) { if (e.getMessage().contains(\"shell provisioner\")) { /* add shell provisioner in admin settings */ } }","preventionTips":["Verify a shell provisioner exists after installing or migrating OneDev.","Include provisioner settings in server config backups/restore checks.","Don't delete default provisioners without replacing them."],"tags":["provisioner","configuration","workspace"],"backgroundTag":"missing-configuration","analyzedSha":"d44925c47c37992c828ea673a5f9620539bc3ff2","analyzedAt":"2026-09-06T07:18:27.995Z","contentChangedAt":"2026-09-06T07:18:27.995Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}