Commit graph

219 commits

Author SHA1 Message Date
Evans Mungai
5b78ee8dff
Merge pull request #31644 from banjoh/em/fix-nil-values
Some checks failed
build-test / build (push) Has been cancelled
CodeQL / Analyze (push) Has been cancelled
golangci-lint / golangci-lint (push) Has been cancelled
release / release (push) Has been cancelled
release / canary-release (push) Has been cancelled
Scorecard supply-chain security / Scorecard analysis (push) Has been cancelled
fix(values): preserve nil values when chart default is empty map
2026-01-31 13:03:55 +00:00
Evans Mungai
0298b2ffd0
Remove refactorring changes from coalesce_test.go
Signed-off-by: Evans Mungai <mbuevans@gmail.com>
2026-01-07 13:16:11 +00:00
Evans Mungai
b8937ad192
Fix import
Signed-off-by: Evans Mungai <mbuevans@gmail.com>
2026-01-07 12:58:21 +00:00
Evans Mungai
a333bbaf27
Update pkg/chart/common/util/coalesce_test.go
Co-authored-by: George Jenkins <gvjenkins@gmail.com>
Signed-off-by: Evans Mungai <mbuevans@gmail.com>
2026-01-07 12:51:47 +00:00
Mads Jensen
2d6d9c09c4 Replace reflect.Ptr with reflect.Pointer
The reflect package has a go:fix annotation for Ptr = Pointer.

Signed-off-by: Mads Jensen <atombrella@users.noreply.github.com>
2025-12-31 10:05:43 +01:00
Branch Vincent
c6d9a5bdc2 build: set kube version via debug.BuildInfo
Signed-off-by: Branch Vincent <branchevincent@gmail.com>
Signed-off-by: George Jenkins <gvjenkins@gmail.com>
2025-12-19 21:13:47 -08:00
Mads Jensen
a490bb3c20 Use errors.Is to check for io.EOF and gzip.ErrHeader
In GoLang, using the == operator to check for a certain error will not
unwrap the error chain, and therefore may hide the problem.

Signed-off-by: Mads Jensen <atombrella@users.noreply.github.com>
2025-12-14 08:54:11 +01:00
Robert Sirchia
4cf7d8d025
Merge pull request #31641 from wangjingcun/main
chore: fix some comments to improve readability
2025-12-12 19:34:20 +01:00
Evans Mungai
3416dd5f21
Fix lint warning
Signed-off-by: Evans Mungai <mbuevans@gmail.com>
2025-12-12 17:09:18 +00:00
Evans Mungai
679f051980
Preserve nil values in chart already
Signed-off-by: Evans Mungai <mbuevans@gmail.com>
2025-12-12 17:00:18 +00:00
Evans Mungai
292fe70219
fix(values): preserve nil values when chart default is empty map
Only delete nil user values when overriding a non-nil chart default.
When chart has empty map or no default for a key, preserve user's nil.

| Scenario | Result |
|----------|--------|
| User sets `baz: ~`, chart has `baz: "value"` | Key deleted |
| User sets `baz: ~`, chart has empty map `{}` | Nil preserved |
| User sets `baz: ~`, chart has `baz: ~` | Nil preserved |

Fixes #31643

Signed-off-by: Evans Mungai <mbuevans@gmail.com>
2025-12-12 16:32:32 +00:00
Terry Howe
d28853e206
Merge pull request #31624 from atombrella/feature/sloglint
Some checks are pending
build-test / build (push) Waiting to run
CodeQL / Analyze (push) Waiting to run
golangci-lint / golangci-lint (push) Waiting to run
govulncheck / govulncheck (push) Waiting to run
release / release (push) Waiting to run
release / canary-release (push) Waiting to run
Scorecard supply-chain security / Scorecard analysis (push) Waiting to run
Enable the `sloglint` linter
2025-12-12 08:04:45 -07:00
wangjingcun
858cf31583 chore: fix some comments to improve readability
Signed-off-by: wangjingcun <wangjingcun@aliyun.com>
2025-12-12 12:01:35 +08:00
Mads Jensen
a18e59e465 Enable the sloglint linter
Signed-off-by: Mads Jensen <atombrella@users.noreply.github.com>
2025-12-09 08:24:36 +01:00
George Jenkins
3165e5463a
Merge pull request #31528 from benoittgt/31423-git-version
fix: preserve vendor suffixes in KubeVersion.GitVersion
2025-12-08 08:35:56 -08:00
Matt Farina
ff35414bed
Merge pull request #31546 from benoittgt/31544-nil-pointer
Some checks failed
build-test / build (push) Has been cancelled
CodeQL / Analyze (push) Has been cancelled
golangci-lint / golangci-lint (push) Has been cancelled
release / release (push) Has been cancelled
release / canary-release (push) Has been cancelled
Scorecard supply-chain security / Scorecard analysis (push) Has been cancelled
fix(lint): prevent segmentation violation on only comment yaml in multidoc
2025-12-01 09:15:14 -05:00
Mads Jensen
6cceead399 Use modernize to use newer Golang features.
The rangeint suggestion is faster.
The maps.Copy and slices.Contains are just syntatic sugar.

Signed-off-by: Mads Jensen <atombrella@users.noreply.github.com>
2025-11-22 18:52:40 +01:00
Benoit Tigeot
81d244ca21
fix: prevent segmentation violation on empty yaml in multidoc
Fixes: https://github.com/helm/helm/issues/31544

Signed-off-by: Benoit Tigeot <benoit.tigeot@lifen.fr>
2025-11-20 20:59:53 +01:00
Matt Farina
df6aafeeee
Merge pull request #31462 from mattfarina/load-archive
Some checks are pending
build-test / build (push) Waiting to run
CodeQL / Analyze (push) Waiting to run
golangci-lint / golangci-lint (push) Waiting to run
release / release (push) Waiting to run
release / canary-release (push) Waiting to run
Scorecard supply-chain security / Scorecard analysis (push) Waiting to run
Adding a LoadArchive to common loader
2025-11-20 11:13:27 -05:00
Matt Farina
63858b383f
Merge pull request #31535 from mattfarina/bump-4.1
bump version to 4.1
2025-11-20 11:13:03 -05:00
Matt Farina
63e060fb05
bump version to 4.1
Signed-off-by: Matt Farina <matt.farina@suse.com>
2025-11-19 12:49:49 -05:00
shuv0id
2dc5864f44 fix: add missing context to debug logs
Adds chart name to dependency logs, namespace to resource waiting logs,
and confirmation message when all resources are ready.

Addresses #31520

Signed-off-by: shuv0id <110290476+shuv0id@users.noreply.github.com>
2025-11-18 22:25:34 +05:30
Benoit Tigeot
ce273eea48
fix: preserve vendor suffixes in KubeVersion.GitVersion
Helm 3.19.0 introduced a regression where vendor-specific suffixes
(e.g., -gke.1245000, -eks-4096722, +) are stripped from
.Capabilities.KubeVersion.GitVersion, breaking charts that detect
managed Kubernetes platforms.

The root cause was using k8sversion.ParseGeneric().String() which
intentionally discards vendor suffixes. The fix stores both the full
version (with vendor suffix) and a normalized version. String() returns
the normalized version for constraint checking (e.g., ">= 1.21.0"),
while Version/GitVersion preserve the full string for template access.

Fixes #31423
Related to #31063, #31078

Signed-off-by: Benoit Tigeot <benoit.tigeot@lifen.fr>
2025-11-18 15:28:16 +01:00
Scott Rigby
b740071279
Merge pull request #31342 from TerryHowe/chore-remove-mitchellh-dependency-3
chore: replace github.com/mitchellh/copystructure
2025-11-14 15:26:10 -05:00
Matt Farina
0f5eda74c1
Adding a LoadArchive to common loader
LoadArchive is in the individual loaders for the chart versions.
It is used by SDK users to load a stream rather than a file on
the filesystem. Adding to support SDK users like Flux.

Signed-off-by: Matt Farina <matt.farina@suse.com>
2025-11-06 09:08:30 -05:00
Benoit Tigeot
97b7a1c9ae
Merge branch 'main' into fix-31170-URN
Signed-off-by: Benoit Tigeot <benoittgt@users.noreply.github.com>
Signed-off-by: Benoit Tigeot <benoit.tigeot@lifen.fr>
2025-10-30 16:07:34 +01:00
Matt Farina
15300549f0
When time not available, using time.Now
Note, when time is not available, the builds are not reproducible.
This problem would only happen when an SDK user is using parts of
the API to build their own tooling. Helm will consistently inject
the dates through the higher level APIs.

Signed-off-by: Matt Farina <matt.farina@suse.com>
2025-10-29 15:11:20 -04:00
Matt Farina
ca8eae9361
Reproducible chart archive builds
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>
2025-10-29 11:49:22 -04:00
Matt Farina
1da2b0a6d4
Merge pull request #31204 from benoittgt/fix-31202
Some checks failed
build-test / build (push) Has been cancelled
CodeQL / Analyze (push) Has been cancelled
golangci-lint / golangci-lint (push) Has been cancelled
release / release (push) Has been cancelled
release / canary-release (push) Has been cancelled
Scorecard supply-chain security / Scorecard analysis (push) Has been cancelled
Avoid panic in helm.sh/helm/v3/pkg/chartutil.ValidateAgainstSchema
2025-10-22 15:47:14 -04:00
Matt Farina
37de51428c
Merge pull request #31376 from benoittgt/accept-yaml-yml
Do not ignore *.yml file on linting while accepting *.yaml
2025-10-21 15:23:40 -04:00
Benoit Tigeot
06188f9dfe
Add test for isYamlFileExtension functions
Signed-off-by: Benoit Tigeot <benoit.tigeot@lifen.fr>
2025-10-11 13:28:36 +02:00
Matt Farina
78cd44bd75
Merge pull request #30712 from gjenkins8/gjenkins/cleanup_lint_template
cleanup: Remove extra lint/rules.Template functions
2025-10-10 16:55:17 -04:00
Matt Farina
94bfe9ba12 Move action get metadata to chart interfaces
Signed-off-by: Matt Farina <matt.farina@suse.com>
2025-10-10 11:49:08 -04:00
Benoit Tigeot
4a944230ea
Do not ignore *.yml file on linting while accepting *.yaml
From : https://github.com/helm/helm/pull/30712/files#r2417446037

Signed-off-by: Benoit Tigeot <benoit.tigeot@lifen.fr>
2025-10-09 22:52:52 +02:00
Terry Howe
ee322a9671
fix: flakey lint test on shuffle
Signed-off-by: Terry Howe <terrylhowe@gmail.com>
2025-10-01 10:24:42 -06:00
Terry Howe
bee9c1a108
chore: replace github.com/mitchellh/copystructure
Signed-off-by: Terry Howe <terrylhowe@gmail.com>
2025-09-29 10:30:08 -06:00
George Jenkins
efcb5735e5 cleanup: Remove extra lint/rules.Template functions
Signed-off-by: George Jenkins <gvjenkins@gmail.com>
2025-09-21 11:49:33 -07:00
Matt Farina
8dc7c57f50
Update the action interfaces for chart apiversions
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>
2025-09-17 15:19:02 -04:00
Benoit Tigeot
072e2a689a
Extend --skip-schema-validation for lint command
When --skip-schema-validation is enabled, the lint command will now skip
JSON schema validation for values.yaml files, allowing charts with schema
validation errors to pass linting when the flag is used.

This addresses the gap where --skip-schema-validation only applied to
templates but not to values files, providing complete schema validation
bypass when needed.

Fixes: #13413

Signed-off-by: Suleiman Dibirov <idsulik@gmail.com>
Signed-off-by: Benoit Tigeot <benoit.tigeot@lifen.fr>
2025-09-10 15:23:05 +02:00
Benoit Tigeot
939fff9cb9
Avoid "panic: interface conversion: interface {} is nil"
Closes: #31202
Signed-off-by: Benoit Tigeot <benoit.tigeot@lifen.fr>
2025-09-07 16:45:32 +02:00
Kamil Swiechowski
a645dfb7f8 fix:semverv2 lint test error message
Signed-off-by: Kamil Swiechowski <kamil.swiechowski@iprally.com>
2025-09-05 13:10:41 +02:00
Benoit Tigeot
8025a397e6
Ignore duplicated URN in logs
Signed-off-by: Benoit Tigeot <benoit.tigeot@lifen.fr>
2025-09-04 15:53:07 +02:00
Benoit Tigeot
03bb62f63d
jsonschema: warn and ignore unresolved URN $ref to match v3.18.4
- v3.18.5 switched jsonschema and began resolving external $ref
  at compile-time, exposing missing urn handling
  (“no URLLoader registered for urn:…”).
- Add urn scheme loader and pluggable URNResolver. If unresolved, log
  a warning and return a permissive true schema (back-compat).
- Apply to pkg/chart/v2 and internal/chart/v3 validators. Not sure about
  that

Note: external URNs need AddResource/Resolver (the CLI uses --map for
this). Warning may appear twice since both validators run.

Another strategy could be to add the option to import more "external
schema" explicitly but it is another PR. Something similar to `--map`
from jsonschema package
(santhosh-tekuri/jsonschema@ed65924).

Close: #31170

Signed-off-by: Benoit Tigeot <benoit.tigeot@lifen.fr>
2025-09-04 15:45:17 +02:00
Kamil Swiechowski
38d1a7376f fix: throw warning when chart version is not semverv2
Signed-off-by: Kamil Swiechowski <kamil.swiechowski@iprally.com>
2025-09-03 07:49:41 +02:00
Matt Farina
9dcc49cbd5 Move lint pkg to be part of each chart version
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>
2025-09-02 12:14:37 -04:00
Robert Sirchia
30404b4173
Merge pull request #31138 from islewis/release-3.18
fix(helm-lint): Add HTTP/HTTPS URL support for json schema references
2025-08-19 15:47:25 -04:00
Isaiah Lewis
62e0c78ef8
fix(helm-lint): fmt
Signed-off-by: Isaiah Lewis <isaiah@roof12.com>
2025-08-19 12:35:12 -07:00
Isaiah Lewis
fb12b44493
fix(helm-lint): Add TLSClientConfig
Signed-off-by: Isaiah Lewis <isaiah@roof12.com>
2025-08-18 11:35:59 -07:00
Isaiah Lewis
fa73b6743b
fix(helm-lint): Add HTTP/HTTPS URL support for json schema references
Signed-off-by: Isaiah Lewis <isaiah@roof12.com>
2025-08-15 07:31:30 -07:00
joemicky
fab70472af refactor: replace []byte(fmt.Sprintf) with fmt.Appendf
Signed-off-by: joemicky <joemickychang@outlook.com>
2025-08-14 19:21:52 +08:00