Files
renovate/lib/modules/manager/helmv3
Sebastian Poxhofer 97327c3d28 refactor(linters): add prefer-coerce-array rule (#45492)
* refactor(linters): add prefer-coerce-array rule

Refs #45217

`x ?? []` and `coerceArray(x)` say the same thing, but only the second
one is searchable and consistent. The rule flags a `??` whose default is
a bare `[]` literal; a non-empty default or an asserted `([] as Foo[])`
still passes.

Applying it across `lib/` surfaced three spots the helper cannot cover,
which keep `?? []` with a disable comment or a narrower fix:

- `package-files.ts` destructures a tuple, which `coerceArray()` widens
- `generate.spec.ts` defaults `matchAll()`, an iterator rather than an array
- `mise/upgradeable-tooling.ts` declares a `Record` return, so its
  `?? []` fallback was wrong to begin with and becomes `coerceObject()`

* refactor(platform/github): hoist the GHE version header lookup

`Object.entries(...).find()` returns a tuple, and defaulting it with
`?? []` only to destructure the second element reads as an array
default when it is not one. Name the found entry instead, which drops
the `?? []` rather than routing a tuple through `coerceArray()`.
2026-08-28 09:27:58 +00:00
..
2024-04-11 13:23:20 +00:00

Renovate supports updating Helm Chart references in:

  • requirements.yaml files, for Helm v2
  • Chart.yaml files, for Helm v3

The helmv3 manager defines this default registryAlias:

{
  "registryAliases": {
    "stable": "https://charts.helm.sh/stable"
  }
}

If you use repository aliases in your Helm charts then you must set an registryAliases object in your configuration file so Renovate knows where to find the repository. Alias values must be properly formatted URIs.

If you need to change the versioning format, read our versioning documentation to learn more.

Private repositories and registries

To use private sources in your Helm charts, you must set the password and username you use to authenticate to the private source. For this you use a custom hostRules array.

OCI registries

{
  hostRules: [
    {
      // Global login
      matchHost: 'registry.gitlab.com',
      hostType: 'docker',
      username: '<some-username>',
      password: '<some-password>',
    },
    {
      // For repository string oci://registry.gitlab.com/user/oci-helm-test
      matchHost: 'https://registry.gitlab.com/user/oci-helm-test',
      hostType: 'docker',
      username: '<some-username>',
      password: '<some-password>',
    },
  ],
}

Helm repository

{
  hostRules: [
    {
      // Global login for 'gitlab.com' if using Helm
      matchHost: 'gitlab.com',
      hostType: 'helm', // this is optional, but else the credentials will be used for all requests matching `matchHost`
      username: '<some-username>',
      password: '<some-password>',
    },
    {
      // Specific repository
      matchHost: 'https://gitlab.com/api/v4/projects/xxxxxxx/packages/helm/stable',
      hostType: 'helm', // this is optional
      username: '<some-username>',
      password: '<some-password>',
    },
  ],
}

Subchart archives

To get updates for subchart archives put helmUpdateSubChartArchives in your postUpdateOptions configuration. Renovate now updates archives in the /charts folder.

{
  "postUpdateOptions": ["helmUpdateSubChartArchives"]
}