From c127ead62237d1a99d6c62d939cfdf10d51eee2d Mon Sep 17 00:00:00 2001 From: Jameel Al-Aziz <247849+jalaziz@users.noreply.github.com> Date: Tue, 7 Feb 2023 12:20:26 -0800 Subject: [PATCH] feat(manager/terraform): support OCI registry in helm_release `repository` (#20237) Co-authored-by: Sebastian Poxhofer <secustor@users.noreply.github.com> --- lib/modules/manager/terraform/__fixtures__/helm.tf | 8 ++++++++ lib/modules/manager/terraform/extract.spec.ts | 9 ++++++++- .../terraform/extractors/resources/helm-release.ts | 10 +++++++++- 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/lib/modules/manager/terraform/__fixtures__/helm.tf b/lib/modules/manager/terraform/__fixtures__/helm.tf index a977c66268..6cae1674ac 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 978645438f..27bdaa4d62 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 62e3e81d5d..753e912d32 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'; -- GitLab