{"record":{"id":"2e584718ddc20fb2","repo":"microsoft/aspire","slug":"helm-chart-name-name-is-invalid-it-must-be-250-characters-or","errorCode":null,"errorMessage":"Helm chart name '{name}' is invalid. It must be 250 characters or fewer.","messagePattern":"Helm chart name '(.+?)' is invalid\\. It must be 250 characters or fewer\\.","errorType":"validation","errorClass":"ArgumentException","httpStatus":null,"severity":"error","filePath":"src/Aspire.Hosting.Kubernetes/HelmChartOptions.cs","lineNumber":312,"sourceCode":"    // Matches Helm's own chart-version validation, which uses the lenient SemVer parser\n    // (Masterminds/semver/v3 NewVersion) — see helm/helm pkg/chart/v2/metadata.go isValidSemver.\n    // Helm accepts a leading \"v\" and partial versions (e.g. \"v1\", \"1\", \"1.2\"), coercing them\n    // to a full semantic version. Leading zeros are not allowed.\n    internal const SemVersionStyles ChartVersionStyles = SemVersionStyles.AllowV | SemVersionStyles.OptionalMinorPatch;\n\n    internal static void ValidateChartVersion(string version, string paramName)\n    {\n        if (!SemVersion.TryParse(version, ChartVersionStyles, out _))\n        {\n            throw new ArgumentException($\"Helm chart version '{version}' is invalid. Helm accepts versions such as '1.2.3', '1.2.3-beta.1+ef365', '1', '1.2', or 'v1.2.3'.\", paramName);\n        }\n    }\n\n    internal static void ValidateChartName(string name, string paramName)\n    {\n        if (name.Length > HelmChartNameMaxLength)\n        {\n            throw new ArgumentException($\"Helm chart name '{name}' is invalid. It must be {HelmChartNameMaxLength} characters or fewer.\", paramName);\n        }\n\n        if (!HelmChartNamePattern().IsMatch(name))\n        {\n            throw new ArgumentException($\"Helm chart name '{name}' is invalid. Use alphanumeric characters, '-', '_', or '.'.\", paramName);\n        }\n    }\n\n    internal static void ValidateChartDescription(string description, string paramName)\n    {\n        if (description.Length > HelmChartDescriptionMaxLength)\n        {\n            throw new ArgumentException($\"Helm chart description is invalid. It must be {HelmChartDescriptionMaxLength} characters or fewer.\", paramName);\n        }\n    }\n\n    [GeneratedRegex(\"^[a-z0-9]([-a-z0-9]*[a-z0-9])?$\")]\n    private static partial Regex DnsLabelPattern();","sourceCodeStart":294,"sourceCodeEnd":330,"githubUrl":"https://github.com/microsoft/aspire/blob/25830f84bd145686607ad00c057b3f84e2e51d43/src/Aspire.Hosting.Kubernetes/HelmChartOptions.cs#L294-L330","documentation":"Aspire's Kubernetes hosting integration rejects Helm chart names longer than 250 characters. The name is written into Helm chart metadata, which enforces a maximum length, so WithChartName validates eagerly and throws ArgumentException instead of emitting an invalid chart.","triggerScenarios":"Calling WithChartName on a Kubernetes resource with a string whose Length exceeds HelmChartNameMaxLength (250).","commonSituations":"Programmatically composed names (app+environment+suffix concatenation) in long CI/CD pipelines or deeply nested team/org naming conventions that accidentally exceed 250 chars.","solutions":["Shorten the chart name passed to WithChartName to 250 characters or fewer.","If the name is composed at runtime, truncate it before calling WithChartName.","Use a short, stable chart name and put longer descriptive info in the chart description field."],"exampleFix":"// before\nbuilder.AddKubernetesEnvironment(\"env\")\n    .WithChartName(\"my-very-long-team-department-product-environment-\" + longSuffix);\n// after\nvar chartName = $\"my-chart-{environment}\";\nbuilder.AddKubernetesEnvironment(\"env\")\n    .WithChartName(chartName.Length <= 250 ? chartName : chartName[..250]);","handlingStrategy":"validation","validationCode":"if (chartName is null || chartName.Length > 250) throw new ArgumentException($\"Chart name must be 250 chars or fewer, got {chartName?.Length}.\");","typeGuard":null,"tryCatchPattern":"try { builder.WithChartName(name); } catch (ArgumentException ex) when (ex.Message.Contains(\"250 characters\")) { /* truncate and retry */ }","preventionTips":["Validate name length at configuration-load time","Use short, slugified chart names","Keep descriptive metadata in the description field"],"tags":["kubernetes","helm","validation","argument"],"backgroundTag":"value-out-of-range","analyzedSha":"25830f84bd145686607ad00c057b3f84e2e51d43","analyzedAt":"2026-09-16T11:10:06.193Z","contentChangedAt":"2026-09-16T11:10:06.193Z","schemaVersion":2},"datasetVersion":"2026-09-21T04:17:39.646Z"}