helmfile/pkg/state
yxxhero 6e21671228
feat: kubedog integration with unified resource handling (#2383)
* feat: add kubedog-based resource tracking integration

Add kubedog tracking as an alternative to Helm's --wait flag with:
- Real-time deployment progress tracking
- Container log streaming
- Fine-grained resource filtering (trackKinds/skipKinds/trackResources)

Features:
- New pkg/resource package for unified manifest parsing and filtering
- New pkg/kubedog package wrapping kubedog library
- CLI flags: --track-mode, --track-timeout, --track-logs
- Helmfile YAML support for trackMode, trackTimeout, trackLogs, trackKinds, skipKinds, trackResources
- Case-insensitive kind matching for filtering
- Multi-context support with proper kubeconfig/kubeContext handling

Tracking supports: Deployment, StatefulSet, DaemonSet, Job

Resource filtering priority (highest to lowest):
1. trackResources - explicit resource whitelist
2. skipKinds - blacklist specific kinds
3. trackKinds - whitelist specific kinds

Integration:
- Disable Helm --wait when using kubedog tracking
- Track after successful Helm sync/apply
- Respect release.Namespace as fallback for resources without namespace
- Use getKubeContext() for correct cluster targeting

Tests:
- Unit tests for resource filtering and kubedog options
- Integration test with httpbin chart
- E2E snapshot tests for YAML serialization
- Documentation in docs/advanced-features.md

Signed-off-by: yxxhero <aiopsclub@163.com>

* fix: address PR #2383 review comments (round 4)

1. resource/filter.go: Skip empty whitelist entries in matchWhitelist
   - At least one field (kind/name/namespace) must be specified
   - Prevents matching all resources with empty TrackResources entries

2. config/apply.go: Add ValidateConfig for track-mode validation
   - Validate --track-mode must be 'helm' or 'kubedog'
   - Reject invalid values like --track-mode foo

3. config/sync.go: Add ValidateConfig for track-mode validation
   - Same validation as apply command
   - Ensures consistent behavior across commands

Signed-off-by: yxxhero <aiopsclub@163.com>

---------

Signed-off-by: yxxhero <aiopsclub@163.com>
2026-03-02 17:15:12 +08:00
..
testdata feat: inject cli state values (--state-values-set) into environment templating context (#1917) 2025-02-14 20:49:07 +08:00
chart_dependencies_rewrite_test.go fix: rewrite relative file:// chart dependencies to absolute paths (#2334) 2025-12-20 09:08:39 +08:00
chart_dependency.go fix: eliminate os.Chdir in sequential helmfiles to fix relative path resolution (#2410) 2026-02-22 09:21:46 +08:00
chart_dependency_test.go fix: two releases using the same chart in different version fails (#1685) 2024-09-12 20:26:45 +08:00
create.go fix: helmBinary setting ignored in multi-document YAML files (#2414) 2026-02-20 22:12:38 +08:00
create_test.go fix: helmBinary setting ignored in multi-document YAML files (#2414) 2026-02-20 22:12:38 +08:00
diff_error_propagation_test.go feat: add Helm 4 support while maintaining Helm 3 compatibility (#2262) 2025-11-19 07:49:30 +08:00
environment.go feat(state): add missingFileHandlerConfig and related logic (#2105) 2025-07-21 19:15:51 -04:00
envvals_loader.go fix: array merge regression - layer arrays now replace defaults (#2367) 2026-01-18 14:04:54 +08:00
envvals_loader_test.go feat: inject cli state values (--state-values-set) into environment templating context (#1917) 2025-02-14 20:49:07 +08:00
helmx.go feat: kubedog integration with unified resource handling (#2383) 2026-03-02 17:15:12 +08:00
helmx_test.go Remove deprecated --wait-retries flag support to fix Helm compatibility error (#2179) 2025-09-11 13:57:28 +08:00
issue_2297_test.go fix: resolve issues #2295, #2296, and #2297 (#2298) 2025-11-27 22:13:03 +08:00
issue_2355_test.go fix: resolve --validate flag conflict with kustomize in Helm 4 (#2362) 2026-01-18 13:59:55 +08:00
oci_chart_lock_test.go fix: skip cache refresh for shared cache paths to prevent race conditions (#2396) 2026-02-14 10:46:05 +08:00
oci_chart_version_test.go fix: support OCI chart digest syntax (@sha256:...) (#2398) 2026-02-12 20:20:43 +08:00
oci_parse_test.go fix: support OCI chart digest syntax (@sha256:...) (#2398) 2026-02-12 20:20:43 +08:00
release.go feat: execute templates against postRendererHooks (#1839) 2025-01-28 09:34:59 -05:00
release_error.go Fix misleading `helmfile diff` output (#1174) 2020-04-04 17:39:20 +09:00
release_filters.go Allow more characters in label selectors (#2064) 2022-03-09 20:38:29 +09:00
release_filters_test.go chore: add tests for release filters (#1629) 2024-07-16 09:45:42 +08:00
release_test.go refactor(yaml): upgrade from gopkg.in/yaml.v2 to v3 (#2039) 2025-05-15 10:21:37 -04:00
run_helm_dep_builds_skip_refresh_test.go fix: local chart with external dependencies error when repos configured (#2433) 2026-02-28 09:23:04 +08:00
selector_test.go feat: add labels for helm release (#1046) 2025-03-30 19:24:41 -04:00
skip_test.go Fix four critical bugs: array merging (#2281), AWS SDK logging (#2270), helmDefaults skip flags (#2269), and OCI chart versions (#2247) (#2288) 2025-11-22 09:27:51 +08:00
state.go feat: kubedog integration with unified resource handling (#2383) 2026-03-02 17:15:12 +08:00
state_exec_tmpl.go Expose release version as .Release.ChartVersion for templating (#2080) 2025-06-17 19:41:42 +08:00
state_exec_tmpl_test.go Expose release version as .Release.ChartVersion for templating (#2080) 2025-06-17 19:41:42 +08:00
state_gogetter_test.go Prevent excessive log in tests 2022-10-11 06:19:32 +09:00
state_kubeversion_test.go 🐛 Fix four critical issues: environment merging, kubeVersion detection, lookup() with kustomize, and Helm 4 color flags (#2276) 2025-11-21 08:32:54 +08:00
state_run.go Drop Helm v2 support (#613) 2023-01-17 09:24:47 +09:00
state_test.go fix: eliminate os.Chdir in sequential helmfiles to fix relative path resolution (#2410) 2026-02-22 09:21:46 +08:00
storage.go fix: eliminate os.Chdir in sequential helmfiles to fix relative path resolution (#2410) 2026-02-22 09:21:46 +08:00
storage_test.go fix: array merge regression - layer arrays now replace defaults (#2367) 2026-01-18 14:04:54 +08:00
temp.go Replace interface{} by any (#901) 2023-06-16 10:49:05 +09:00
temp_test.go feat: kubedog integration with unified resource handling (#2383) 2026-03-02 17:15:12 +08:00
types.go fix: array merge regression - layer arrays now replace defaults (#2367) 2026-01-18 14:04:54 +08:00
util.go fix: version path issue (#1344) 2024-02-16 09:08:28 +09:00
util_test.go fix: version path issue (#1344) 2024-02-16 09:08:28 +09:00