Skip to content

HelmSharp 1.0.3

Latest

Choose a tag to compare

@GaTTGeng GaTTGeng released this 22 Jun 02:55
· 10 commits to master since this release

HelmSharp 1.0.3 is a patch release that fixes two parser bugs and achieves a major template rendering milestone.

πŸŽ‰ Golden Test Milestone β€” 129/129 Templates (100%)

HelmSharp now renders all 129 templates across 5 real-world public Helm charts without a single parser exception:

Chart Version Templates Result
ingress-nginx 4.12.1 42/42 βœ…
cert-manager 1.17.1 41/41 βœ…
external-dns 1.21.1 7/7 βœ…
podinfo 6.14.0 21/21 βœ…
metrics-server 3.13.1 18/18 βœ…
Total β€” 129/129 βœ…

A new golden test harness (RealChartGoldenTests) runs as part of CI to prevent regressions. Output is structurally comparable to helm template β€” remaining differences are at the YAML formatting and value-evaluation level, not the parser level.

Install

dotnet add package HelmSharp.Action --version 1.0.3

NuGet Packages

Package Purpose
HelmSharp.Action High-level Helm client API and release operations.
HelmSharp.Chart Chart loading, values merging, YAML helpers, and chart metadata.
HelmSharp.Engine Helm-style template rendering.
HelmSharp.Kube Kubernetes manifest apply, delete, and wait helpers.
HelmSharp.Release Helm release records backed by Kubernetes Secrets.
HelmSharp.Repo Chart repository index, pull, and search helpers.
HelmSharp.Registry OCI registry extension point package.
HelmSharp.Storage Release storage extension point package.
HelmSharp.PostRenderer Post-renderer extension point package.

Highlights

Parser Bug Fixes

  • #51 β€” SplitByTopLevel now tracks parentheses depth so | inside (...) is not treated as a pipeline separator. Fixes (empty .x) and ($value | quote | len) patterns in real charts.
  • #50 β€” else-if chain reconstruction now correctly produces balanced template blocks. C# string interpolation was producing single braces instead of double braces. Also preserves multi-branch else-if/else chains.

Engine Robustness

  • Render() now accumulates NotSupportedException per-template rather than failing on the first unsupported template.
  • Per-template variable isolation prevents := assignments from leaking across templates.
  • Better error messages: IncludeTemplate reports the template name, RenderSection reports the block expression.

Testing

  • Real-chart golden test harness comparing HelmSharp against helm template for 5 public charts.
  • 214 tests passing across net8.0, net9.0, and net10.0 (up from 203).

Full Changelog

See CHANGELOG.md for the complete list of changes.

Known Scope

HelmSharp implements a practical Helm-compatible subset. Advanced template functions, plugin behavior, provenance verification, OCI authentication flows, and uncommon Kubernetes resource wait semantics are tracked in the project milestones.