diff --git a/lib/modules/manager/terraform/__fixtures__/helm.tf b/lib/modules/manager/terraform/__fixtures__/helm.tf index a977c66268e5444abe044fbfbe37bb64645d4a89..6cae1674acbcaf6b2950b6113e1097be9532e1ba 100644 --- a/lib/modules/manager/terraform/__fixtures__/helm.tf +++ b/lib/modules/manager/terraform/__fixtures__/helm.tf @@ -45,3 +45,11 @@ resource "helm_release" "karpenter" { chart = "oci://public.ecr.aws/karpenter/karpenter" version = "v0.22.1" } + +## chart in OCI registry +resource "helm_release" "karpenter_oci_repo" { + name = "karpenter" + repository = "oci://public.ecr.aws/karpenter" + chart = "karpenter" + version = "v0.22.1" +} diff --git a/lib/modules/manager/terraform/extract.spec.ts b/lib/modules/manager/terraform/extract.spec.ts index 978645438fc477b07efcda1e343f1f9212f0cb2a..27bdaa4d62d2b4421969cc7cc85ca8f88319771e 100644 --- a/lib/modules/manager/terraform/extract.spec.ts +++ b/lib/modules/manager/terraform/extract.spec.ts @@ -574,7 +574,7 @@ describe('modules/manager/terraform/extract', () => { it('extract helm releases', async () => { const res = await extractPackageFile(helm, 'helm.tf', {}); - expect(res?.deps).toHaveLength(7); + expect(res?.deps).toHaveLength(8); expect(res?.deps.filter((dep) => dep.skipReason)).toHaveLength(2); expect(res?.deps).toIncludeAllPartialMembers([ { @@ -623,6 +623,13 @@ describe('modules/manager/terraform/extract', () => { depName: 'public.ecr.aws/karpenter/karpenter', depType: 'helm_release', }, + { + currentValue: 'v0.22.1', + datasource: 'docker', + depName: 'karpenter', + depType: 'helm_release', + registryUrls: ['https://public.ecr.aws/karpenter'], + }, ]); }); diff --git a/lib/modules/manager/terraform/extractors/resources/helm-release.ts b/lib/modules/manager/terraform/extractors/resources/helm-release.ts index 62e3e81d5d1edb799afd820536dfe0b8e85e4e82..753e912d3299487cc745f2ad14bf92bffbd4de95 100644 --- a/lib/modules/manager/terraform/extractors/resources/helm-release.ts +++ b/lib/modules/manager/terraform/extractors/resources/helm-release.ts @@ -27,7 +27,15 @@ export class HelmReleaseExtractor extends DependencyExtractor { datasource: HelmDatasource.id, }; if (is.nonEmptyString(helmRelease.repository)) { - dep.registryUrls = [helmRelease.repository]; + if (isOCIRegistry(helmRelease.repository)) { + // For oci repos, we remove the oci:// and use the docker datasource + dep.registryUrls = [ + helmRelease.repository.replace('oci://', 'https://'), + ]; + dep.datasource = DockerDatasource.id; + } else { + dep.registryUrls = [helmRelease.repository]; + } } if (!helmRelease.chart) { dep.skipReason = 'invalid-name';