helmfile/test/e2e/template/helmfile
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: kubedog integration with unified resource handling (#2383) 2026-03-02 17:15:12 +08:00
.gitignore feat: add duration to failed releases summary (#1066) 2023-10-12 18:49:07 -05:00
README.md Add integration test with local oci repo 2022-07-18 13:43:01 +00:00
snapshot_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
tmpl_test.go Replace interface{} by any (#901) 2023-06-16 10:49:05 +09:00

README.md

This directory contains a set of Go test source and testdata to test the helmfile template's rendering result by calling helmfile build or helmfile template on test input and comparing the output against the snapshot.

The testdata directory is composed of:

  • charts: The Helm charts used from within test helmfile configs (snapshpt/*/input.yaml) as local charts and remote charts
  • snapshot/$NAME/input.yaml: The input helmfile config for the test case of $NAME
  • snapshot/$NAME/output.yaml: The expected output of the helmfile command
  • snapshot/$NAME/config.yaml: The snapshot test configuration file. See the Config struct defined in snapshot_test.go for more information