Introduced new CLI flag `-d`/`--values-directory`
for loading values from YAML files from a
specified directory. Following are the key
details:
- This will be used by the following commands:
1. `install`
2. `lint`
3. `package`
4. `template`
5. `upgrade`
Updated the help text of these commands with the
same.
- Made this flag the lowest in precedence i.e.,
values from values directory can be overridden
by inputs from any other input flags
(`-f`/`--values`, `--set-json`, `--set`,
`--set-string`, `--set-file`, `--set-literal`).
Note: The default values from the chart's
`values.yaml` file will have the lowest
precedence than all the input flags including
`-d`/`--values-directory` by design. In order
the values from `values.yaml` to override the
values from `-d`/`--values-directory`, users can
explicitly provide the chart's `values.yaml`
file path using the `-f`/`--values` flag.
- This flag reads all `.yaml` files from the
specified directory and its subdirectories
recursively, in lexicographical order. For eg.
for the following directory structure:
foo/
├── bar/
│ └── bar.yaml
├── baz/
│ ├── baz.yaml
│ └── qux.yaml
├── baz.txt
└── foo.yaml
The files will be read in the order:
`bar/bar.yaml`, `baz/baz.yaml`, `baz/qux.yaml`,
`foo.yaml`.
- If the specified directory does not exist, an
error is returned.
- Non-YAML files in the directory are ignored.
i.e., if the specified directory exists but
contains no YAML files, an empty map is returned
without errors.
- If multiple YAML files contain overlapping keys,
the values are overridden in lexicographical
order. For eg. in the above example, if both
`baz/baz.yaml` and `foo.yaml` contain a key
`replicaCount`, the value from `foo.yaml` will
take precedence as it is read last.
Fixes helm#10416
Signed-off-by: Bhargav Ravuri <bhargav.ravuri@infracloud.io>
Building the same chart into an archive multiple times will have
the same sha256 hash.
Perviously, the time in the headers for a file was time.Now() which
changed each time. The time is now collected from the operating
system when the file is loaded and this time is used.
Fixes: #3612
Signed-off-by: Matt Farina <matt.farina@suse.com>
This change is about handling the interfaces to public functions for
different chart apiVersions. The internals are still focused on v2.
This enables v3 to be layered in layer.
Signed-off-by: Matt Farina <matt.farina@suse.com>
Close: #31231
```
Error: cmd/helm/root.go:165:2: SA1019: flags.ParseErrorsWhitelist is deprecated: use [FlagSet.ParseErrorsAllowlist] instead. This field will be removed in a future release. (staticcheck)
```
Signed-off-by: Benoit Tigeot <benoit.tigeot@lifen.fr>
Linting is specific to the chart versions. A v2 and v3 chart will
lint differently.
To accomplish this, packages like engine need to be able to handle
different chart versions. This was accomplished by some changes:
1. The introduction of a Charter interface for charts
2. The ChartAccessor which is able to accept a chart and then
provide access to its data via an interface. There is an
interface, factory, and implementation for each version of
chart.
3. Common packages were moved to a common and util packages.
Due to some package loops, there are 2 packages which may
get some consolidation in the future.
The new interfaces provide the foundation to move the actions
and cmd packages to be able to handle multiple apiVersions of
charts.
Signed-off-by: Matt Farina <matt.farina@suse.com>
The repo package is internally versioned at v1. Repos were designed
to be versioned. This change moves it to a versioned directory the
same way other packages are now being handled.
Signed-off-by: Matt Farina <matt.farina@suse.com>