yxxhero
781d28a47a
feat: add defaultInherit for automatic release template inheritance ( #2600 )
...
* feat: add defaultInherit for automatic release template inheritance
Add a top-level defaultInherit field to helmfile.yaml that automatically
applies template inheritance to all releases without requiring explicit
inherit on each release.
The field accepts a single template name as a string or a list of
template names. Releases that already explicitly inherit from the same
template are not duplicated.
Fixes #2599
Signed-off-by: yxxhero <aiopsclub@163.com>
* style: fix gci formatting in app_template_test.go
Signed-off-by: yxxhero <aiopsclub@163.com>
* fix: correct relative chart path in integration test
Signed-off-by: yxxhero <aiopsclub@163.com>
* fix: use absolute chart path in bad-helmfile test
Signed-off-by: yxxhero <aiopsclub@163.com>
* fix: use clean chart path in bad-helmfile test
Signed-off-by: yxxhero <aiopsclub@163.com>
* fix: use dir variable for chart path
Signed-off-by: yxxhero <aiopsclub@163.com>
* test: fix flaky defaultInherit integration assertions
Agent-Logs-Url: https://github.com/helmfile/helmfile/sessions/d0884e8e-8b1b-456d-8250-dec1566b8a37
Co-authored-by: yxxhero <11087727+yxxhero@users.noreply.github.com>
* test: tighten defaultInherit integration assertions
Agent-Logs-Url: https://github.com/helmfile/helmfile/sessions/d0884e8e-8b1b-456d-8250-dec1566b8a37
Co-authored-by: yxxhero <11087727+yxxhero@users.noreply.github.com>
* test: harden release block parsing in issue-2599 case
Agent-Logs-Url: https://github.com/helmfile/helmfile/sessions/d0884e8e-8b1b-456d-8250-dec1566b8a37
Co-authored-by: yxxhero <11087727+yxxhero@users.noreply.github.com>
* test: make issue-2599 assertions format-tolerant
Agent-Logs-Url: https://github.com/helmfile/helmfile/sessions/d0884e8e-8b1b-456d-8250-dec1566b8a37
Co-authored-by: yxxhero <11087727+yxxhero@users.noreply.github.com>
* test: fix section extraction and regex matching in issue-2599 case
Agent-Logs-Url: https://github.com/helmfile/helmfile/sessions/d0884e8e-8b1b-456d-8250-dec1566b8a37
Co-authored-by: yxxhero <11087727+yxxhero@users.noreply.github.com>
* fix: sanitize defaultInherit values and dedupe applied templates
Agent-Logs-Url: https://github.com/helmfile/helmfile/sessions/85a8e815-3701-4b48-a28d-6bb2d50a3b40
Co-authored-by: yxxhero <11087727+yxxhero@users.noreply.github.com>
* chore: address validation feedback on defaultInherit fixes
Agent-Logs-Url: https://github.com/helmfile/helmfile/sessions/85a8e815-3701-4b48-a28d-6bb2d50a3b40
Co-authored-by: yxxhero <11087727+yxxhero@users.noreply.github.com>
* fix: sanitize releaseInherit entries in applyDefaultInherit; add cleanup trap and quote vars in integration test
Agent-Logs-Url: https://github.com/helmfile/helmfile/sessions/1fbf62d5-7ce2-42e5-898b-30151c0c1ef9
Co-authored-by: yxxhero <11087727+yxxhero@users.noreply.github.com>
* refactor: combine releaseInherit loops in applyDefaultInherit to avoid double TrimSpace; clarify test comment
Agent-Logs-Url: https://github.com/helmfile/helmfile/sessions/1fbf62d5-7ce2-42e5-898b-30151c0c1ef9
Co-authored-by: yxxhero <11087727+yxxhero@users.noreply.github.com>
* test: align default inherit tests with yaml wrapper and assertions
Agent-Logs-Url: https://github.com/helmfile/helmfile/sessions/3ea9b8e4-633f-43c4-899f-e063ec576486
Co-authored-by: yxxhero <11087727+yxxhero@users.noreply.github.com>
* test: address review feedback on defaultInherit tests
Agent-Logs-Url: https://github.com/helmfile/helmfile/sessions/3ea9b8e4-633f-43c4-899f-e063ec576486
Co-authored-by: yxxhero <11087727+yxxhero@users.noreply.github.com>
* test: fix issue-2599 integration script helmfile invocation
Agent-Logs-Url: https://github.com/helmfile/helmfile/sessions/9452bb65-7086-459f-b5ae-0b00c1e021eb
Co-authored-by: yxxhero <11087727+yxxhero@users.noreply.github.com>
---------
Signed-off-by: yxxhero <aiopsclub@163.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
2026-05-20 18:21:03 +08:00
yxxhero
e703b15075
docs: restructure documentation and improve newcomer experience ( #2573 )
...
* feat: add --write-output flag to helmfile fetch for air-gapped environments
Add --write-output flag to helmfile fetch that outputs a modified
helmfile.yaml with chart references updated to point to downloaded
local chart paths. Combined with --output-dir, this enables preparing
all charts for deployment in air-gapped environments.
Usage:
helmfile fetch --output-dir ./charts --write-output > helmfile-airgapped.yaml
Fixes #2571
Signed-off-by: yxxhero <yxxhero@users.noreply.github.com>
Signed-off-by: yxxhero <aiopsclub@163.com>
* docs: restructure documentation and improve newcomer experience
Split the monolithic index.md (1990 lines) into focused topic pages,
update mkdocs.yml navigation, and add missing documentation for
undocumented code features.
Structure changes:
- Extract configuration.md (helmfile.yaml reference)
- Extract cli.md (CLI commands and flags)
- Extract templating.md (template syntax and env vars)
- Extract environments.md (environment configuration)
- Extract releases.md (DAG, needs, selectors)
- Extract hooks.md (lifecycle hooks)
- Extract integrations.md (ArgoCD, Azure ACR, OCI)
- Slim index.md to ~270 line landing page with step-by-step tutorial
Newcomer improvements:
- Add 5-step Getting Started tutorial with explanations
- Reorganize nav: Getting Started now shows core learning path
(Writing Helmfile → Values → Environments → Releases)
- Add Quick Reference table to configuration.md
- Simplify writing-helmfile.md title
Code-vs-docs gap fixes:
- Document 23 undocumented release fields (valuesTemplate,
setTemplate, forceNamespace, adopt, trackMode, etc.)
- Document 6 undocumented helmDefaults fields (enableDNS,
forceConflicts, skipRefresh, takeOwnership, etc.)
- Document print-env command and missing CLI flags
- Document kubectlApply hook field
- Document environment defaults field and merge order
- Document kubedogQPS/kubedogBurst advanced settings
- Document template partials (_*.tpl) auto-loading
Cleanup:
- Fix Docker image version from v0.156.0 to v1.1.0
- Fix heading nesting in advanced-features.md
- Update experimental-features.md with current features
- Fix broken cross-references and anchor links
Signed-off-by: yxxhero <aiopsclub@163.com>
* Revert changes to pkg/app from docs/restructure-and-improve branch
Signed-off-by: yxxhero <aiopsclub@163.com>
* docs: add create subcommand to README and CLI reference
Signed-off-by: yxxhero <aiopsclub@163.com>
---------
Signed-off-by: yxxhero <yxxhero@users.noreply.github.com>
Signed-off-by: yxxhero <aiopsclub@163.com>
2026-05-03 19:33:33 +08:00
yxxhero
26646ebd31
docs: add comprehensive values merging and data flow guide ( #2461 )
...
Add new documentation explaining how Helmfile merges values from various sources:
- Core architecture and data flow
- Values sources and precedence order
- Deep merge behavior for maps and arrays
- Environment-specific value handling
- Secret management and priorities
- Common patterns and troubleshooting
This guide helps users understand the foundational concepts needed for
writing effective helmfiles, especially regarding value overrides and
merge strategies.
Signed-off-by: yxxhero <aiopsclub@163.com>
2026-03-09 07:34:05 +08:00
Oleksandr Vorona
29caac793e
Allow secrets to be excluded from release template inheritance ( #1189 )
...
* Allow secrets to be excluded from inheritance, small docs update
Signed-off-by: Alex Vorona <alex@vorona.com.ua>
* Fix typo in docs
Signed-off-by: Alex Vorona <alex@vorona.com.ua>
---------
Signed-off-by: Alex Vorona <alex@vorona.com.ua>
2023-12-05 18:17:48 +08:00
stoned
b1f1d28fa7
Fix Markdown rendering of indented code blocks ( #814 )
...
... by using plain indented code blocks instead of indented fenced
code blocks.
While here also fix list rendering and add missing Go template escaping
in inline `values` map example.
Signed-off-by: Stoned Elipot <stoned.elipot@gmail.com>
2023-04-19 06:19:49 +08:00
stoned
4aeb0ff6f2
Fix inherit examples following #674 ( #815 )
2023-04-19 05:56:29 +08:00
stoned
1ddba549d3
Doc fixes ( #812 )
2023-04-18 21:10:22 +08:00
xiaomudk
c4eb62388b
Drop Helm v2 support ( #613 )
...
Resolves #589
Signed-off-by: xiaomudk <xiaomudk@gmail.com>
2023-01-17 09:24:47 +09:00
Yusuke Kuoka
490bb5d147
feat: `inherit` field for release template inheritance ( #606 )
...
* feat: `inherit` field for release template inheritance
Ref https://github.com/helmfile/helmfile/issues/435#issuecomment-1364749414
Signed-off-by: Yusuke Kuoka <ykuoka@gmail.com>
* Fix wording
Signed-off-by: Yusuke Kuoka <ykuoka@gmail.com>
* Comment on releaseWithInheritedTemplate
Signed-off-by: Yusuke Kuoka <ykuoka@gmail.com>
* Update Release Template doc with the new `inherit` feature
Signed-off-by: Yusuke Kuoka <ykuoka@gmail.com>
* Fix a typo in code comment
Signed-off-by: Yusuke Kuoka <ykuoka@gmail.com>
Signed-off-by: Yusuke Kuoka <ykuoka@gmail.com>
2022-12-28 10:01:04 +09:00
Hervé Le Meur
9e3f0a3ba3
fix(doc): add missing version in the release template example
...
Signed-off-by: Hervé Le Meur <hlemeur@cloudbees.com>
2022-07-13 17:45:11 +02:00
George Gaál
8594944f63
Update writing-helmfile.md ( #1937 )
...
fix small typo
2021-09-14 04:36:40 +09:00
Evgenii Tereshkov
d8247e6543
Update writing-helmfile.md: fix typos ( #1892 )
2021-07-02 07:31:47 +09:00
Vladimir Avdoshka
d9e15754b7
Add documentation about re-using the environment state from parent in sub-helmfile ( #1808 )
...
Ref #762
Co-authored-by: Vladimir Avdoshka <vavdoshka@kyriba.com>
Co-authored-by: Quan TRAN <itscaro@users.noreply.github.com>
2021-05-01 12:26:00 +09:00
Yujun Zhang
378ae4ad72
Fix typo ( #1788 )
2021-04-23 09:27:37 +09:00
Quan TRAN
5cd0afcfa0
Add documentation about helmfile-fetch and StateValues alias ( #1746 )
...
Ref #1743 , #1744 , #1734
2021-04-01 09:48:58 +09:00
Jason Witkowski
2618cfb38b
Enable --wait-for-jobs flag introduced in helm 3.5 ( #1715 )
...
Fixes #1650
Fixes #785
This change introduces:
- `--wait-for-jobs` CLI override option to helmfile binary
- `waitForJobs` helmDefaults parameter (default `false`)
- `waitForJobs` release parameter (default `false`)
Note that `--wait-for-jobs` was introduced in Helm 3.5 (https://github.com/helm/helm/pull/8363 )
2021-03-23 16:53:57 +09:00
Shunsuke Suzuki
33880dab77
docs: fix typo ( #1645 )
...
* docs: fix typo
* docs: syntax highlight
2021-01-12 10:23:21 +09:00
Rene Hernandez
604af3f1d2
Replace getOrNil with get function in documentation ( #1268 )
...
* New output flag for list command
Support output as json
Add new formatters file to handle extrac formatting to its own concern
New config interface to support list command specification
* Fix usage message
* Add error handling for formatters
* Replace usage of getOrNil with get function
* Add nil in get function
Co-authored-by: Rene Hernandez Remedios <rene.hernandez@fullscript.com>
2020-06-08 08:10:27 +09:00
Brian Choy
969de1ebc9
Fix typo in writing-helmfiles.md example ( #1263 )
2020-05-19 10:04:38 +09:00
jfreeland
8acbbc596d
new here, fixing very minor typo ( #1121 )
2020-02-26 10:33:35 +09:00
Guillaume Lecerf
5abbdea059
Fix "Merging Arrays in Layers" doc example ( #1084 )
2020-02-03 08:42:16 +09:00
Matt L
c8ba676e19
Update writing-helmfile.md ( #1073 )
...
nitpick spelling
2020-02-03 08:39:40 +09:00
Liam Dawson
d6bd317c9c
Update templating example typo ( #895 )
2019-10-17 08:25:24 +09:00
eddycharly
fd0133e10a
Update documentation and tests for .Values ( #839 )
...
Resolves #816
2019-09-14 05:35:16 +02:00
a-hat
6dfc9be0d1
doc: Update documentation about layering release values ( #837 )
...
Closes #836
2019-09-06 09:29:08 +09:00
KUOKA Yusuke
4bc99337b2
Make advanced templating backward-compatible ( #833 )
...
This is a follow-up for #823
Ref https://github.com/roboll/helmfile/pull/823#discussion_r319712283
2019-08-31 22:37:46 +09:00
astorath
11d0abba6e
feat: Advanced Templating ( #823 )
...
1. Added `helmfile build` command to print final state
Motivation: useful for debugging purposes and some CI scenarios
Ref #780
2. Template interpolation is now recursive (you can cross-reference release fields) like:
```yaml
templates:
release:
name: {{`app-{{ .Release.Namespace }}`}}
namespace: {{`{{ .Release.Labels.ns }}`}}
labels:
ns: dev
```
3. Experimental: Added some boolean release fields interpolation in templates:
```yaml
templates:
release:
name: {{`app-{{ .Release.Namespace }}`}}
namespace: dev
installedTemplate: {{`{{ eq .Release.Namespace "dev" }}`}}
```
Resolves #818
4. Added more template interpolations: Labels, SetValues
5. Added template interpolation for inline Values
6. Added `helmfile list` command to print target releases in simple tabular form
7. Added release names in some `helm` output messages, e.g.: `Comparing release=%v, chart=%v`
2019-08-31 14:31:31 +09:00
KUOKA Yusuke
3986f6497e
Update writing-helmfile.md
2019-06-04 23:41:26 +09:00
KUOKA Yusuke
1012256f16
feat: "base" helmfile state gotmpl is rendered with the envvals inherited from the parent ( #613 )
...
Resolves #611
2019-05-22 18:28:10 +09:00
Yusuke KUOKA
aef366660b
feat: split-render-merge helmfile.yaml parts
...
This splits your helmfile.yaml by the YAML document separator "---" before evaluating go template expressions as outlined in https://github.com/roboll/helmfile/issues/388#issuecomment-491710348
2019-05-13 21:49:59 +09:00
Yusuke KUOKA
1db205de48
feat: "bases" for easier layerina
...
This adds the new configuration key `baeses` to your helmfile.yaml files, so that you can layer them without the `readFile` template function, which was a bit unintuitive.
Please see https://github.com/roboll/helmfile/issues/388#issuecomment-491710348 for more context
2019-05-13 21:48:00 +09:00
Dan O'Brien
8f7ab740bd
minor typo ( #496 )
2019-03-19 19:14:52 +09:00
Simon Li
abeccc5e8e
Fix indentation in writing-helmfile.md example ( #454 )
2019-01-25 23:32:33 +09:00
KUOKA Yusuke
5f52f96709
fix missingFileHandler ( #440 )
...
- Fix panics when `missingFileHandler` is not defined
- Fix `missingFileHandler: Error` had been writing errors at the Warn level
- Add `Info` and `Debug` as valid values
Ref https://github.com/roboll/helmfile/pull/439#issuecomment-456155521
2019-01-22 11:22:53 +09:00
KUOKA Yusuke
f813ac2642
feat: Release Template ( #439 )
...
This feature is supposed to help advanced use-cases like Conventional Directory Structure explained in several issues like #428 .
Newly added configuration keys `templates`, `missingFileHandler`, and the ability to defer executing template expressions in `values`, `secrets`, `namespace`, and `chart` of releases allows you to abstract away repetitions into a reusable template:
```yaml
templates:
default: &default
missingFileHandler: Warn
namespace: "{{`{{ .Release.Name }}`}}"
chart: stable/{{`{{ .Release.Name }}`}}
values:
- config/{{`{{ .Release.Name }}`}}/values.yaml
- config/{{`{{ .Release.Name }}`}}/{{`{{ .Environment.Name }}`}}.yaml
secrets:
- config/{{`{{ .Release.Name }}`}}/secrets.yaml
- config/{{`{{ .Release.Name }}`}}/{{`{{ .Environment.Name }}`}}-secrets.yaml
releases:
- name: envoy
<<: *default
```
See the updated documentation for more details.
Resolves #428
2019-01-22 01:19:07 +09:00
KUOKA Yusuke
770c3daa5f
feat: `get` and `getOrNil` template funcs to allow defaulting in templates ( #370 )
...
* feat: `get` and `getOrNil` template funcs to allow defaulting in templates
Ref #357
* Add docs about missing keys and default values in templates
2018-09-28 11:44:49 +09:00
KUOKA Yusuke
9808849986
feat: Merge multiple docs inside a single helmfile.yaml ( #270 )
...
Resolves #254
2018-09-19 15:42:01 +09:00