{"record":{"id":"2a18e644e056bda9","repo":"elastic/elasticsearch","slug":"release-version-not-specified","errorCode":null,"errorMessage":"Release version not specified","messagePattern":"Release version not specified","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/release/TagVersionsTask.java","lineNumber":57,"sourceCode":"    @Inject\n    public TagVersionsTask(BuildLayout layout) {\n        super(layout);\n    }\n\n    @Option(option = \"release\", description = \"The release version to be tagged\")\n    public void release(String version) {\n        releaseVersion = Version.fromString(version);\n    }\n\n    @Option(option = \"tag-version\", description = \"Version id to tag. Of the form <VersionType>:<id>.\")\n    public void tagVersions(List<String> version) {\n        this.tagVersions = splitVersionIds(version);\n    }\n\n    @TaskAction\n    public void executeTask() throws IOException {\n        if (releaseVersion == null) {\n            throw new IllegalArgumentException(\"Release version not specified\");\n        }\n        if (tagVersions.isEmpty()) {\n            throw new IllegalArgumentException(\"No version tags specified\");\n        }\n\n        LOGGER.lifecycle(\"Tagging version {} component ids\", releaseVersion);\n\n        var versions = expandV7Version(tagVersions);\n\n        for (var v : versions.entrySet()) {\n            Path recordFile = switch (v.getKey()) {\n                case INDEX_VERSION_TYPE -> rootDir.resolve(INDEX_VERSIONS_RECORD);\n                default -> throw new IllegalArgumentException(\"Unknown version type \" + v.getKey());\n            };\n\n            LOGGER.lifecycle(\"Adding version record for {} to [{}]: [{},{}]\", v.getKey(), recordFile, releaseVersion, v.getValue());\n\n            Path file = rootDir.resolve(recordFile);","sourceCodeStart":39,"sourceCodeEnd":75,"githubUrl":"https://github.com/elastic/elasticsearch/blob/db6a809a667c081ca1dc7500389d26975573215f/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/release/TagVersionsTask.java#L39-L75","documentation":"Thrown by TagVersionsTask.executeTask() when releaseVersion is still null — i.e. the @Option(option=\"release\") setter was never invoked with a version string before the task ran. The task cannot proceed because every subsequent step keys off the release version.","triggerScenarios":"Running the tagVersions task without passing --release=<version> on the Gradle command line, or with an empty value, or invoking executeTask() programmatically without first calling release(String).","commonSituations":"A release runbook step that supplies --release was skipped or refactored away; the property was renamed; CI invoked the task without the expected -P/-- options.","solutions":["Invoke the task with the --release option, e.g. ./gradlew tagVersions --release=8.10.0.","If driving the task programmatically, call task.release(version) before task.executeTask().","Add a Gradle DSL check (doFirst or @Input) that fails earlier with a clearer message when --release is absent."],"exampleFix":"// before\n./gradlew tagVersions --tag-version=Index:42\n\n// after\n./gradlew tagVersions --release=8.10.0 --tag-version=Index:42","handlingStrategy":"validation","validationCode":"// In a Gradle doFirst on the tagVersions task\ntasks.named('tagVersions').configure(t -> t.doFirst(spec -> {\n    TagVersionsTask task = (TagVersionsTask) spec.getTask();\n    if (!task.getProviders().gradleProperty(\"release\").isPresent()) {\n        throw new GradleException(\"--release=<version> is required\");\n    }\n}));","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Make --release a documented, mandatory argument in the release runbook.","Add a doFirst guard so failures surface before the task body runs."],"tags":["release-tooling","gradle-task","missing-option","precondition"],"analyzedSha":"db6a809a667c081ca1dc7500389d26975573215f","analyzedAt":"2026-08-12T01:39:14.192Z","schemaVersion":2},"datasetVersion":"2026-08-12T08:17:17.861Z"}