feat(release): support Helm v3 release secrets#195
Conversation
Persist managed releases using Helm v3's encoded Secret payload while retaining legacy HelmSharp read compatibility and actionable diagnostics. Preserve chart, values, notes, labels, and hooks across lifecycle operations, backed by an official Helm v3.21.3 fixture and multi-target regression coverage.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 9194920dc5
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Merge stored chart defaults with release overrides for --all values output and fall back to persisted Helm v3 release notes when chart resolution is unavailable. Add regression coverage for both paths.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 0575e407d3
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| var values = HelmYaml.DeserializeDictionary(record.ChartValuesYaml); | ||
| HelmValues.MergeInto(values, HelmYaml.DeserializeDictionary(record.ValuesYaml)); |
There was a problem hiding this comment.
Include dependency values in allValues output
For releases containing enabled subcharts, this reconstructs allValues from only the root chart's ChartValuesYaml and user overrides, so subchart defaults, imported values, and propagated globals produced by HelmValues.BuildFromOverrides remain absent. The fresh evidence after the earlier review is that the new helper only performs these two YAML merges, while the saved ChartValuesYaml is assigned directly from the root chart.ValuesYaml; preserve the computed values or reconstruct them with the dependency graph before serving allValues: true.
Useful? React with 👍 / 👎.
What does this PR do?
data.releasepayload.release.jsonrelease Secrets.CHANGELOG.mdunder[Unreleased].Why is this change needed?
HelmSharp release storage previously depended on its private
release.jsonrepresentation and did not preserve enough Helm release data for full lifecycle parity. Supporting the Helm v3data.releaseformat allows HelmSharp to read release Secrets produced by Helm itself while retaining backward compatibility with existing HelmSharp records and providing complete stored data to lifecycle consumers.Fixes #190
How was this tested?
dotnet restore HelmSharp.sln: succeeded.dotnet build HelmSharp.sln --configuration Release --no-restore: succeeded with 0 warnings and 0 errors.Focused release-storage tests: 13/13 passed on each of net8.0, net9.0, and net10.0.
Full Release suite: 561/561 passed on each of net8.0, net9.0, and net10.0.
dotnet pack: all projects and target frameworks packed successfully.Official Helm v3.21.3 raw fixture SHA-256:
EC2B9BED527BC0BF56E58762DB0178041AF5DD4FDF3F82E7021F16FCEDE6FA08.Fixture integrity and decoded release diff checks passed.
dotnet build HelmSharp.sln --configuration Releasedotnet test HelmSharp.sln --configuration ReleaseChecklist