Skip to content

feat(release): support Helm v3 release secrets#195

Open
GaTTGeng wants to merge 2 commits into
masterfrom
fix/m3-helm-v3-release-secrets
Open

feat(release): support Helm v3 release secrets#195
GaTTGeng wants to merge 2 commits into
masterfrom
fix/m3-helm-v3-release-secrets

Conversation

@GaTTGeng

Copy link
Copy Markdown
Owner

What does this PR do?

  • Adds Helm v3-compatible release Secret decoding from the canonical data.release payload.
  • Preserves compatibility with legacy HelmSharp release.json release Secrets.
  • Persists and restores the complete chart, computed values, notes, labels, hooks, and release metadata required for lifecycle operations.
  • Updates stored-hook consumers to use the hooks restored from release storage.
  • Adds an official Helm v3.21.3 raw release Secret fixture and compatibility coverage.
  • Updates CHANGELOG.md under [Unreleased].

Why is this change needed?

HelmSharp release storage previously depended on its private release.json representation and did not preserve enough Helm release data for full lifecycle parity. Supporting the Helm v3 data.release format 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 Release

  • dotnet test HelmSharp.sln --configuration Release

Checklist

  • Code follows the existing style of the project
  • New or updated tests cover the changes
  • No unrelated changes are included

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.
Copilot AI review requested due to automatic review settings July 17, 2026 04:07

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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".

Comment thread src/HelmSharp.Action/HelmClient.cs
Comment thread src/HelmSharp.Release/HelmV3ReleaseCodec.cs
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.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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".

Comment on lines +724 to +725
var values = HelmYaml.DeserializeDictionary(record.ChartValuesYaml);
HelmValues.MergeInto(values, HelmYaml.DeserializeDictionary(record.ValuesYaml));

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[M3] Support Helm v3 release Secret format interoperability

2 participants