{"record":{"id":"2d13190826f866c7","repo":"theonedev/onedev","slug":"error-validating-dependency-job-parameters-depend","errorCode":null,"errorMessage":"Error validating dependency job parameters (dependency job: %s, error message: %s)","messagePattern":"Error validating dependency job parameters \\(dependency job: (.+?), error message: (.+?)\\)","errorType":"validation","errorClass":"ValidationException","httpStatus":null,"severity":"error","filePath":"server-core/src/main/java/io/onedev/server/buildspec/BuildSpec.java","lineNumber":538,"sourceCode":"\t}\n\t\n\tprivate void checkDependencies(Job job, List<String> dependencyChain) {\n\t\tfor (JobDependency dependency: job.getJobDependencies()) {\n\t\t\tif (dependencyChain.contains(dependency.getJobName())) {\n\t\t\t\tdependencyChain.add(dependency.getJobName());\n\t\t\t\tthrow new ValidationException(\"Circular dependencies (\" + dependencyChain + \")\");\n\t\t\t} else {\n\t\t\t\tJob dependencyJob = getJobMap().get(dependency.getJobName());\n\t\t\t\tif (dependencyJob != null) {\n\t\t\t\t\tif (dependencyChain.isEmpty()) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tParamUtils.validateParamMatrix(dependencyJob.getParamSpecs(), dependency.getParamMatrix());\n\t\t\t\t\t\t\tfor (var paramMap: dependency.getExcludeParamMaps())\n\t\t\t\t\t\t\t\tParamUtils.validateParamMap(dependencyJob.getParamSpecs(), paramMap.getParams());\n\t\t\t\t\t\t} catch (ValidationException e) {\n\t\t\t\t\t\t\tString message = String.format(\"Error validating dependency job parameters (dependency job: %s, error message: %s)\", \n\t\t\t\t\t\t\t\t\tdependencyJob.getName(), e.getMessage());\n\t\t\t\t\t\t\tthrow new ValidationException(message);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tList<String> newDependencyChain = new ArrayList<>(dependencyChain);\n\t\t\t\t\tnewDependencyChain.add(dependency.getJobName());\n\t\t\t\t\tcheckDependencies(dependencyJob, newDependencyChain);\n\t\t\t\t} else if (dependencyChain.isEmpty()) {\n\t\t\t\t\tthrow new ValidationException(\"Dependency job not found (\" + dependency.getJobName() + \")\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\t\n\t@Nullable\n\tpublic static BuildSpec get() {\n\t\tBuildSpecAware buildSpecAware = HierarchicalContext.get().findData(BuildSpecAware.class);\n\t\tif (buildSpecAware != null) \n\t\t\treturn buildSpecAware.getBuildSpec();\n\t\telse","sourceCodeStart":520,"sourceCodeEnd":556,"githubUrl":"https://github.com/theonedev/onedev/blob/d44925c47c37992c828ea673a5f9620539bc3ff2/server-core/src/main/java/io/onedev/server/buildspec/BuildSpec.java#L520-L556","documentation":"When a job's dependency specifies a paramMatrix or excludeParamMaps that do not validate against the dependency job's paramSpecs, checkDependencies throws ValidationException 'Error validating dependency job parameters (dependency job: <name>, error message: <cause>)'. The dependency job name and underlying cause are embedded in the message.","triggerScenarios":"A jobDependencies entry with a paramMatrix containing parameters the dependent job does not declare, missing required params, invalid choice values, or excludeParamMaps with unknown param names; only validated at the outermost level (empty chain).","commonSituations":"Changing a dependency job's paramSpecs after other jobs already reference it with the old param set; typos in parameter names in the dependency block; providing params to a job that takes none.","solutions":["Fix the paramMatrix in the jobDependencies entry to match the dependency job's declared paramSpecs","Update the dependency job's paramSpecs if the new usage is intended","Remove unknown parameters or fix choice values per the dependency job's spec","Validate in the build spec editor, which flags parameter mismatches per job dependency"],"exampleFix":"# before: dependency job has no param 'version'\njobDependencies:\n- jobName: build\n  paramMatrix:\n    version: '1.0'\n# after\njobDependencies:\n- jobName: build\n  paramMatrix:\n    release: '1.0'   # matches declared paramSpecs","handlingStrategy":"validation","validationCode":"var depJob = buildSpec.getJobMap().get(dep.getJobName());\nParamUtils.validateParamMatrix(depJob.getParamSpecs(), dep.getParamMatrix());","typeGuard":null,"tryCatchPattern":"try {\n    buildSpec.isValid();\n} catch (ValidationException e) {\n    // message names the dependency job and the param error; align the paramMatrix\n}","preventionTips":["Mirror paramSpecs changes of a job into all jobs depending on it","Only pass parameters actually declared by the dependency job","Use editor validation before committing","Remove paramMatrix entries for jobs without params"],"tags":["buildspec","jobs","dependencies","parameters"],"backgroundTag":"schema-validation-failed","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"}