Complete HIP-0025 implementation across worktrees 2-7:
- Resource-group sequencing: parse helm.sh/resource-group and
helm.sh/depends-on/resource-groups annotations, build per-chart DAG,
deploy in batch order with unsequenced resources last
- Custom readiness: JSONPath-based readiness-success/readiness-failure
evaluation engine with --readiness-timeout flag
- Upgrade/rollback/uninstall: ordered upgrade mirrors install batching,
reverse-order deletion for uninstall/rollback using stored
SequencingMetadata
- helm template: reorder manifest output by DAG batch order with
resource-group delimiter comments
- Lint rules: validate subchart depends-on references and detect DAG
cycles at lint time
- DAG visualization: String() method for human-readable batch output
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add SequencingMetadata struct (enabled, strategy, batches) to Release
- Persist subchart DAG batch order during ordered install
- Enables rollback/uninstall to reconstruct original deployment order
- Add performOrderedInstall to deploy resources in DAG batch order
- Add SplitManifestsBySubchart to partition manifests by subchart source
- Add BuildInstallBatches to compute ordered deployment batches from chart metadata
- Extract createAndWaitResources helper for reuse across install paths
- When --wait=ordered, install hooks normally but deploy resources per subchart DAG
- Falls back to standard all-at-once deploy when no sequencing metadata exists
- 7 unit tests for manifest splitting and batch construction
- Add OrderedStrategy constant to WaitStrategy enum
- OrderedStrategy delegates to StatusWatcher for readiness checks
- Batching/sequencing logic handled by action layer
- Accept --wait=ordered in CLI flag parser
Introduces the foundation for HIP-0025 resource creation sequencing:
- Add DependsOn []string field to v2 and v3 Dependency structs
- Implement DAG with topological sort, cycle detection, and batch layering
- Add BuildSubchartDAG to construct dependency graphs from Chart.yaml
- Parse helm.sh/depends-on/subcharts annotation from chart metadata
- 23 unit tests covering linear, diamond, parallel, orphan, and cycle cases
* feat(create): add hidden --chart-api-version flag
Add --chart-api-version flag to helm create command to allow selecting
chart API version (v2 or v3) when creating a new chart.
- Default is v2 (existing behavior unchanged)
- v3 uses internal/chart/v3 scaffold generator
- Invalid versions return clear error message
- Works with --starter flag
Signed-off-by: Evans Mungai <mbuevans@gmail.com>
* Add HELM_EXPERIMENTAL_CHART_V3 feature gate to create command
Signed-off-by: Evans Mungai <mbuevans@gmail.com>
* make chartv3 private and use loader to load the chart
Signed-off-by: Evans Mungai <mbuevans@gmail.com>
* Hide chart-api-version flag until chart v3 is officially released
Signed-off-by: Evans Mungai <mbuevans@gmail.com>
* Conditionally hide the --chart-api-version flag if chart v3 is not enabled
Signed-off-by: Evans Mungai <mbuevans@gmail.com>
* Add internal gates package for internal feature gates
Signed-off-by: Evans Mungai <mbuevans@gmail.com>
* Add doc for internal/gates package
Signed-off-by: Evans Mungai <mbuevans@gmail.com>
---------
Signed-off-by: Evans Mungai <mbuevans@gmail.com>
When copying slices containing nil interface{} elements, the copyValue
function would panic with 'reflect: call of reflect.Value.Set on zero
Value'. This occurred because reflect.ValueOf(nil) returns a zero Value
that cannot be set.
This issue was introduced in v4.1.0 when replacing mitchellh/copystructure
with an internal implementation. The fix mirrors the existing nil handling
logic used for map values.
Fixes helm template panic when processing charts with YAML like:
extraArgs:
-
Added test case to verify slice elements with nil values are properly
handled during deep copy operations.
Signed-off-by: Philipp Born <git@pborn.eu>