mirror of
https://github.com/helmfile/helmfile.git
synced 2026-10-04 19:09:02 +02:00
* feat: add per-release continue-on-error support Work in progress for discussion #2799. This introduces the initial release-level configuration needed to continue processing independent releases after a deployment failure. The DAG execution and failure propagation behavior are still being implemented. Refs #2799 Signed-off-by: Axel Delille <Axel.delille31@gmail.com> * fix: address review findings for continueOnError Review fixes for the per-release continueOnError feature: 1. Regenerate values-file ID hashes in pkg/state/temp_test.go — adding ContinueOnError to ReleaseSpec shifts generateValuesID hashes, which broke TestGenerateID (the test file notes these must be regenerated whenever ReleaseSpec changes). 2. Remove the dead skippedErrors variable in withBatches and instead log each skipped release with logger.Warnf at decision time, so users see why a release never ran instead of only learning from the final error list. 3. Aggregate all errors from a state file instead of returning only errs[0] in visitStatesWithContext/processStateFileParallel. With continueOnError, multiple releases can fail or be skipped in one run; reporting only the first error hid the skip errors (and other failures), contradicting the feature's contract. Single-error rendering is unchanged. 4. Gate tolerated errors on ReleaseErrorCodeFailure so that non-failure release errors (e.g. helm-diff's "changes detected" exit code 2 can never enable continuation or block dependents. 5. Report skipped-release messages with the dependency's plain release name instead of its kubeContext/namespace-qualified needs id (e.g. dependency database instead of default/default/database), matching the documented message format. 6. Restructure the withBatches helpers into guard-clause style (filterBlockedReleases, toleratesBatchErrors) and drop the test-only logger nil-guards in favor of a nop logger in tests. 7. Add end-to-end coverage through App.Sync with the exectest fake helm: independent releases continue after a tolerated failure, dependents are skipped with an explicit error, the exit code stays non-zero, and fail-fast remains the default without continueOnError. Also cover the non-failure error code case at the withBatches level. 8. Use new(true) instead of a boolPtr helper (CI-enforced check-modernize) and document the failure-handling interaction in docs/releases.md. Signed-off-by: yxxhero <aiopsclub@163.com> EOF ) Signed-off-by: yxxhero <aiopsclub@163.com> --------- Signed-off-by: Axel Delille <Axel.delille31@gmail.com> Signed-off-by: yxxhero <aiopsclub@163.com> Co-authored-by: yxxhero <aiopsclub@163.com>
Helmfile Agent Skill
Expert guidance for Helmfile v1.1, a declarative spec for deploying Helm charts to Kubernetes.
Installation
Using skills.sh CLI
npx skills add helmfile/helmfile --skill helmfile
Manual Installation
For Claude Code
mkdir -p ~/.claude/skills
cp -r skills/helmfile ~/.claude/skills/
For Cursor
mkdir -p ~/.cursor/skills
cp -r skills/helmfile ~/.cursor/skills/
For OpenCode
mkdir -p ~/.agents/skills
cp -r skills/helmfile ~/.agents/skills/
What This Skill Covers
- Status: Helmfile v1.0/v1.1 released, supports Helm 3.x and Helm 4.x
- Configuration Structure: Full helmfile.yaml reference with all release fields
- CLI Commands: sync, apply, diff, destroy, template, fetch, unittest, show-dag, write-values, and more
- Templating: Built-in objects, template functions (env, exec, readFile, fetchSecretValue, expandSecretRefs), partials
- Environments: Multi-environment setup, HCL values, conditional releases
- Values Merging: Data flow and precedence (bases -> root values -> env values -> HCL -> secrets -> CLI overrides)
- Layering: Bases, release templates, nested helmfiles
- Hooks: Lifecycle hooks (prepare, preapply, presync, preuninstall, postuninstall, postsync, cleanup) with kubectlApply
- Advanced Features: Kubedog resource tracking, Kustomize integration, strategic merge patches, JSON patches, transformers, chart dependencies, remote secrets (vals)
- Best Practices: Directory structure, DRY configuration, labels filtering, missing keys handling
- Troubleshooting: Common issues and solutions, Helm 4 compatibility
Usage
Once installed, simply ask your AI agent questions about Helmfile:
- "Create a helmfile.yaml for deploying Prometheus"
- "How do I set up multi-environment deployments?"
- "Explain release templates and layering"
- "Help me troubleshoot a Helmfile sync issue"
- "How do I use kubedog for resource tracking?"
- "Set up hooks for CRD installation before sync"
- "How do I use vals for remote secrets?"