From 86d7a53a32e84d8723493c01bac49e77f6848c9d Mon Sep 17 00:00:00 2001 From: Maurice Meyer Date: Mon, 16 Jan 2023 18:34:51 +0100 Subject: [PATCH 01/21] feat(manager/terraform): support OCI charts in helm_release --- lib/modules/manager/terraform/__fixtures__/helm.tf | 7 +++++++ lib/modules/manager/terraform/extract.spec.ts | 9 ++++++++- .../terraform/extractors/resources/helm-release.ts | 14 ++++++++++++-- lib/modules/manager/terraform/readme.md | 2 +- lib/modules/manager/terraform/util.ts | 7 +++++++ 5 files changed, 35 insertions(+), 4 deletions(-) diff --git a/lib/modules/manager/terraform/__fixtures__/helm.tf b/lib/modules/manager/terraform/__fixtures__/helm.tf index 32f04accc6e5d9..a977c66268e544 100644 --- a/lib/modules/manager/terraform/__fixtures__/helm.tf +++ b/lib/modules/manager/terraform/__fixtures__/helm.tf @@ -38,3 +38,10 @@ resource "helm_release" "invalid_3" { chart = "redis" version = "6.0.1" } + +## chart in OCI registry +resource "helm_release" "karpenter" { + name = "karpenter" + chart = "oci://public.ecr.aws/karpenter/karpenter" + version = "v0.22.1" +} diff --git a/lib/modules/manager/terraform/extract.spec.ts b/lib/modules/manager/terraform/extract.spec.ts index 21a4b8376b3919..bc9df4400959d4 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(6); + expect(res?.deps).toHaveLength(7); expect(res?.deps.filter((dep) => dep.skipReason)).toHaveLength(2); expect(res?.deps).toIncludeAllPartialMembers([ { @@ -619,6 +619,13 @@ describe('modules/manager/terraform/extract', () => { depType: 'helm_release', registryUrls: [undefined], }, + { + currentValue: 'v0.22.1', + datasource: 'docker', + depName: 'public.ecr.aws/karpenter/karpenter', + depType: 'helm_release', + registryUrls: [undefined], + }, ]); }); diff --git a/lib/modules/manager/terraform/extractors/resources/helm-release.ts b/lib/modules/manager/terraform/extractors/resources/helm-release.ts index 8742603b3faed4..8c82b5949c36f5 100644 --- a/lib/modules/manager/terraform/extractors/resources/helm-release.ts +++ b/lib/modules/manager/terraform/extractors/resources/helm-release.ts @@ -1,8 +1,9 @@ import is from '@sindresorhus/is'; +import { DockerDatasource } from '../../../../datasource/docker'; import { HelmDatasource } from '../../../../datasource/helm'; import type { PackageDependency } from '../../../types'; import { DependencyExtractor } from '../../base'; -import { checkIfStringIsPath } from '../../util'; +import { checkIfChartIsOCI, checkIfStringIsPath, ociRegex } from '../../util'; export class HelmReleaseExtractor extends DependencyExtractor { getCheckList(): string[] { @@ -25,9 +26,18 @@ export class HelmReleaseExtractor extends DependencyExtractor { depName: helmRelease.chart, datasource: HelmDatasource.id, }; + + // For oci charts, we remove the oci:// and use the docker datasource + const isOciChart = checkIfChartIsOCI(helmRelease.chart); + if (isOciChart) { + dep.depName = helmRelease.chart.replace(ociRegex, ''); + dep.datasource = DockerDatasource.id; + } + if (!helmRelease.chart) { dep.skipReason = 'invalid-name'; - } else if (checkIfStringIsPath(helmRelease.chart)) { + // OCI charts strings are valid paths, therefore we exclude them here + } else if (!isOciChart && checkIfStringIsPath(helmRelease.chart)) { dep.skipReason = 'local-chart'; } dependencies.push(dep); diff --git a/lib/modules/manager/terraform/readme.md b/lib/modules/manager/terraform/readme.md index 5faa900edbc6ed..e32eb955410c79 100644 --- a/lib/modules/manager/terraform/readme.md +++ b/lib/modules/manager/terraform/readme.md @@ -33,7 +33,7 @@ Renovate can update the `required_version` attribute of the Terraform block. #### helm_release -Renovate can update the version attribute of `helm_release` resources. +Renovate can update the version attribute of `helm_release` resources. This applies to both helm chart repositories and [charts published in OCI registries](https://helm.sh/docs/topics/registries/). | Name | Public hosting | Private hosting | | ---------------- | :------------: | :-------------: | diff --git a/lib/modules/manager/terraform/util.ts b/lib/modules/manager/terraform/util.ts index b20fd368121e94..fb744a9a104cbd 100644 --- a/lib/modules/manager/terraform/util.ts +++ b/lib/modules/manager/terraform/util.ts @@ -18,6 +18,13 @@ export function checkIfStringIsPath(path: string): boolean { return !!match; } +const ociRegex = /^oci:\/\//; +export { ociRegex }; +export function checkIfChartIsOCI(chart: string): boolean { + const match = ociRegex.exec(chart); + return !!match; +} + export function massageProviderLookupName(dep: PackageDependency): void { if (!dep.packageName) { dep.packageName = dep.depName; From 14dba679073fa3a2080f285bfd852ba70b99601e Mon Sep 17 00:00:00 2001 From: Morre Date: Tue, 17 Jan 2023 09:09:38 +0100 Subject: [PATCH 02/21] Update lib/modules/manager/terraform/util.ts Co-authored-by: Michael Kriese --- lib/modules/manager/terraform/util.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/modules/manager/terraform/util.ts b/lib/modules/manager/terraform/util.ts index fb744a9a104cbd..dc2a1de211b896 100644 --- a/lib/modules/manager/terraform/util.ts +++ b/lib/modules/manager/terraform/util.ts @@ -21,8 +21,7 @@ export function checkIfStringIsPath(path: string): boolean { const ociRegex = /^oci:\/\//; export { ociRegex }; export function checkIfChartIsOCI(chart: string): boolean { - const match = ociRegex.exec(chart); - return !!match; + return ociRegex.test(chart); } export function massageProviderLookupName(dep: PackageDependency): void { From 555e96d6b2d37249e5dd617bdccbd1c7606df882 Mon Sep 17 00:00:00 2001 From: Morre Date: Tue, 17 Jan 2023 09:10:28 +0100 Subject: [PATCH 03/21] Update lib/modules/manager/terraform/util.ts Co-authored-by: Michael Kriese --- lib/modules/manager/terraform/util.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/modules/manager/terraform/util.ts b/lib/modules/manager/terraform/util.ts index dc2a1de211b896..9931f97091942c 100644 --- a/lib/modules/manager/terraform/util.ts +++ b/lib/modules/manager/terraform/util.ts @@ -18,7 +18,7 @@ export function checkIfStringIsPath(path: string): boolean { return !!match; } -const ociRegex = /^oci:\/\//; +const ociRegex = regEx(/^oci:\/\//); export { ociRegex }; export function checkIfChartIsOCI(chart: string): boolean { return ociRegex.test(chart); From 582f99c8f0e325d7d137442e0f8f24aea80cc2c1 Mon Sep 17 00:00:00 2001 From: Maurice Meyer Date: Tue, 17 Jan 2023 09:13:41 +0100 Subject: [PATCH 04/21] refactor: simplify if conditions --- .../extractors/resources/helm-release.ts | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/lib/modules/manager/terraform/extractors/resources/helm-release.ts b/lib/modules/manager/terraform/extractors/resources/helm-release.ts index 8c82b5949c36f5..54371402725cec 100644 --- a/lib/modules/manager/terraform/extractors/resources/helm-release.ts +++ b/lib/modules/manager/terraform/extractors/resources/helm-release.ts @@ -27,19 +27,23 @@ export class HelmReleaseExtractor extends DependencyExtractor { datasource: HelmDatasource.id, }; + if (!helmRelease.chart) { + dep.skipReason = 'invalid-name'; + } else if (checkIfStringIsPath(helmRelease.chart)) { + dep.skipReason = 'local-chart'; + } + // For oci charts, we remove the oci:// and use the docker datasource const isOciChart = checkIfChartIsOCI(helmRelease.chart); if (isOciChart) { dep.depName = helmRelease.chart.replace(ociRegex, ''); dep.datasource = DockerDatasource.id; - } - if (!helmRelease.chart) { - dep.skipReason = 'invalid-name'; - // OCI charts strings are valid paths, therefore we exclude them here - } else if (!isOciChart && checkIfStringIsPath(helmRelease.chart)) { - dep.skipReason = 'local-chart'; + // checkIfStringIsPath above is true, + // we need to override that + dep.skipReason = 'empty'; } + dependencies.push(dep); } } From b2a36cb4b0dbb6b952426b94e7caa6d1c914b529 Mon Sep 17 00:00:00 2001 From: Maurice Meyer Date: Tue, 17 Jan 2023 09:27:45 +0100 Subject: [PATCH 05/21] refactor: remove redundant line --- .../manager/terraform/extractors/resources/helm-release.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/modules/manager/terraform/extractors/resources/helm-release.ts b/lib/modules/manager/terraform/extractors/resources/helm-release.ts index 54371402725cec..b560f32d028abf 100644 --- a/lib/modules/manager/terraform/extractors/resources/helm-release.ts +++ b/lib/modules/manager/terraform/extractors/resources/helm-release.ts @@ -34,8 +34,7 @@ export class HelmReleaseExtractor extends DependencyExtractor { } // For oci charts, we remove the oci:// and use the docker datasource - const isOciChart = checkIfChartIsOCI(helmRelease.chart); - if (isOciChart) { + if (checkIfChartIsOCI(helmRelease.chart)) { dep.depName = helmRelease.chart.replace(ociRegex, ''); dep.datasource = DockerDatasource.id; From 23d47dd00f2e720c461df21ad72f7109c121608f Mon Sep 17 00:00:00 2001 From: Maurice Meyer Date: Tue, 17 Jan 2023 09:32:19 +0100 Subject: [PATCH 06/21] fixup! refactor: simplify if conditions --- .../manager/terraform/extractors/resources/helm-release.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/modules/manager/terraform/extractors/resources/helm-release.ts b/lib/modules/manager/terraform/extractors/resources/helm-release.ts index b560f32d028abf..989cd0a8ca06a6 100644 --- a/lib/modules/manager/terraform/extractors/resources/helm-release.ts +++ b/lib/modules/manager/terraform/extractors/resources/helm-release.ts @@ -40,7 +40,7 @@ export class HelmReleaseExtractor extends DependencyExtractor { // checkIfStringIsPath above is true, // we need to override that - dep.skipReason = 'empty'; + dep.skipReason = undefined; } dependencies.push(dep); From 86591c455c79f0c63e354ffa4aa05007ee1ac593 Mon Sep 17 00:00:00 2001 From: Maurice Meyer Date: Tue, 17 Jan 2023 09:36:57 +0100 Subject: [PATCH 07/21] style: remove unneeded whitespace change --- .../manager/terraform/extractors/resources/helm-release.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/modules/manager/terraform/extractors/resources/helm-release.ts b/lib/modules/manager/terraform/extractors/resources/helm-release.ts index 989cd0a8ca06a6..1be28eff376f63 100644 --- a/lib/modules/manager/terraform/extractors/resources/helm-release.ts +++ b/lib/modules/manager/terraform/extractors/resources/helm-release.ts @@ -26,7 +26,6 @@ export class HelmReleaseExtractor extends DependencyExtractor { depName: helmRelease.chart, datasource: HelmDatasource.id, }; - if (!helmRelease.chart) { dep.skipReason = 'invalid-name'; } else if (checkIfStringIsPath(helmRelease.chart)) { From fe5daf2b347e7e0bfb3210118ba6215bc1ceb880 Mon Sep 17 00:00:00 2001 From: Morre Date: Tue, 17 Jan 2023 12:35:44 +0100 Subject: [PATCH 08/21] Update lib/modules/manager/terraform/extractors/resources/helm-release.ts Co-authored-by: Sebastian Poxhofer --- .../manager/terraform/extractors/resources/helm-release.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/modules/manager/terraform/extractors/resources/helm-release.ts b/lib/modules/manager/terraform/extractors/resources/helm-release.ts index 1be28eff376f63..4ba00eb5a72292 100644 --- a/lib/modules/manager/terraform/extractors/resources/helm-release.ts +++ b/lib/modules/manager/terraform/extractors/resources/helm-release.ts @@ -30,10 +30,8 @@ export class HelmReleaseExtractor extends DependencyExtractor { dep.skipReason = 'invalid-name'; } else if (checkIfStringIsPath(helmRelease.chart)) { dep.skipReason = 'local-chart'; - } - + } else if (checkIfChartIsOCI(helmRelease.chart)) { // For oci charts, we remove the oci:// and use the docker datasource - if (checkIfChartIsOCI(helmRelease.chart)) { dep.depName = helmRelease.chart.replace(ociRegex, ''); dep.datasource = DockerDatasource.id; From 4fe8e2084062063ff678f89bb051658f69b1a54f Mon Sep 17 00:00:00 2001 From: Morre Date: Tue, 17 Jan 2023 12:35:50 +0100 Subject: [PATCH 09/21] Update lib/modules/manager/terraform/extractors/resources/helm-release.ts Co-authored-by: Sebastian Poxhofer --- .../manager/terraform/extractors/resources/helm-release.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/lib/modules/manager/terraform/extractors/resources/helm-release.ts b/lib/modules/manager/terraform/extractors/resources/helm-release.ts index 4ba00eb5a72292..84ee9399960add 100644 --- a/lib/modules/manager/terraform/extractors/resources/helm-release.ts +++ b/lib/modules/manager/terraform/extractors/resources/helm-release.ts @@ -34,10 +34,6 @@ export class HelmReleaseExtractor extends DependencyExtractor { // For oci charts, we remove the oci:// and use the docker datasource dep.depName = helmRelease.chart.replace(ociRegex, ''); dep.datasource = DockerDatasource.id; - - // checkIfStringIsPath above is true, - // we need to override that - dep.skipReason = undefined; } dependencies.push(dep); From 86086bcc362ed5a05c94e22c334ae3b555649351 Mon Sep 17 00:00:00 2001 From: Maurice Meyer Date: Tue, 17 Jan 2023 12:41:17 +0100 Subject: [PATCH 10/21] fix: swap else if conditions OCI charts are also valid paths, therefore we need to check first if it is an OCI chart. --- .../manager/terraform/extractors/resources/helm-release.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/modules/manager/terraform/extractors/resources/helm-release.ts b/lib/modules/manager/terraform/extractors/resources/helm-release.ts index 84ee9399960add..a9936f6de7aeb2 100644 --- a/lib/modules/manager/terraform/extractors/resources/helm-release.ts +++ b/lib/modules/manager/terraform/extractors/resources/helm-release.ts @@ -28,12 +28,12 @@ export class HelmReleaseExtractor extends DependencyExtractor { }; if (!helmRelease.chart) { dep.skipReason = 'invalid-name'; - } else if (checkIfStringIsPath(helmRelease.chart)) { - dep.skipReason = 'local-chart'; } else if (checkIfChartIsOCI(helmRelease.chart)) { - // For oci charts, we remove the oci:// and use the docker datasource + // For oci charts, we remove the oci:// and use the docker datasource dep.depName = helmRelease.chart.replace(ociRegex, ''); dep.datasource = DockerDatasource.id; + } else if (checkIfStringIsPath(helmRelease.chart)) { + dep.skipReason = 'local-chart'; } dependencies.push(dep); From 0a7707dd30b88ffe9753a7b3d19f390e74620bde Mon Sep 17 00:00:00 2001 From: Maurice Meyer Date: Tue, 17 Jan 2023 12:46:03 +0100 Subject: [PATCH 11/21] refactor: use existing helmv3 util function instead of writing a new one --- lib/modules/manager/helmv3/utils.ts | 15 +++++++++++++-- .../extractors/resources/helm-release.ts | 5 +++-- lib/modules/manager/terraform/util.ts | 3 --- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/lib/modules/manager/helmv3/utils.ts b/lib/modules/manager/helmv3/utils.ts index be803f67304ee2..543b8bcf5198ed 100644 --- a/lib/modules/manager/helmv3/utils.ts +++ b/lib/modules/manager/helmv3/utils.ts @@ -82,8 +82,19 @@ export function isAlias(repository: string): boolean { return repository.startsWith('@') || repository.startsWith('alias:'); } -export function isOCIRegistry(repository: Repository): boolean { - return repository.repository.startsWith('oci://'); +export function isOCIRegistry( + repository: Repository | string | undefined +): boolean { + if (typeof repository === 'undefined') { + return false; + } + + let string = repository; + if (typeof repository === 'object') { + string = repository.repository; + } + + return (string as string).startsWith('oci://'); } export function aliasRecordToRepositories( diff --git a/lib/modules/manager/terraform/extractors/resources/helm-release.ts b/lib/modules/manager/terraform/extractors/resources/helm-release.ts index a9936f6de7aeb2..171d2ed4171cf8 100644 --- a/lib/modules/manager/terraform/extractors/resources/helm-release.ts +++ b/lib/modules/manager/terraform/extractors/resources/helm-release.ts @@ -1,9 +1,10 @@ import is from '@sindresorhus/is'; import { DockerDatasource } from '../../../../datasource/docker'; import { HelmDatasource } from '../../../../datasource/helm'; +import { isOCIRegistry } from '../../../helmv3/utils'; import type { PackageDependency } from '../../../types'; import { DependencyExtractor } from '../../base'; -import { checkIfChartIsOCI, checkIfStringIsPath, ociRegex } from '../../util'; +import { checkIfStringIsPath, ociRegex } from '../../util'; export class HelmReleaseExtractor extends DependencyExtractor { getCheckList(): string[] { @@ -28,7 +29,7 @@ export class HelmReleaseExtractor extends DependencyExtractor { }; if (!helmRelease.chart) { dep.skipReason = 'invalid-name'; - } else if (checkIfChartIsOCI(helmRelease.chart)) { + } else if (isOCIRegistry(helmRelease.chart)) { // For oci charts, we remove the oci:// and use the docker datasource dep.depName = helmRelease.chart.replace(ociRegex, ''); dep.datasource = DockerDatasource.id; diff --git a/lib/modules/manager/terraform/util.ts b/lib/modules/manager/terraform/util.ts index 9931f97091942c..4cbd4845e28873 100644 --- a/lib/modules/manager/terraform/util.ts +++ b/lib/modules/manager/terraform/util.ts @@ -20,9 +20,6 @@ export function checkIfStringIsPath(path: string): boolean { const ociRegex = regEx(/^oci:\/\//); export { ociRegex }; -export function checkIfChartIsOCI(chart: string): boolean { - return ociRegex.test(chart); -} export function massageProviderLookupName(dep: PackageDependency): void { if (!dep.packageName) { From b53fc47cc9e2b1a28ff7d8068579ebadac18fa2d Mon Sep 17 00:00:00 2001 From: Morre Date: Tue, 17 Jan 2023 17:08:31 +0100 Subject: [PATCH 12/21] Update lib/modules/manager/terraform/util.ts Co-authored-by: Sebastian Poxhofer --- lib/modules/manager/terraform/util.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/lib/modules/manager/terraform/util.ts b/lib/modules/manager/terraform/util.ts index 4cbd4845e28873..b20fd368121e94 100644 --- a/lib/modules/manager/terraform/util.ts +++ b/lib/modules/manager/terraform/util.ts @@ -18,9 +18,6 @@ export function checkIfStringIsPath(path: string): boolean { return !!match; } -const ociRegex = regEx(/^oci:\/\//); -export { ociRegex }; - export function massageProviderLookupName(dep: PackageDependency): void { if (!dep.packageName) { dep.packageName = dep.depName; From ddb23879ce4e8282404d6a7290102b6e32a697af Mon Sep 17 00:00:00 2001 From: Morre Date: Tue, 17 Jan 2023 17:08:48 +0100 Subject: [PATCH 13/21] Update lib/modules/manager/helmv3/utils.ts Co-authored-by: Sebastian Poxhofer --- lib/modules/manager/helmv3/utils.ts | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/lib/modules/manager/helmv3/utils.ts b/lib/modules/manager/helmv3/utils.ts index 543b8bcf5198ed..3b9629349363ca 100644 --- a/lib/modules/manager/helmv3/utils.ts +++ b/lib/modules/manager/helmv3/utils.ts @@ -83,18 +83,13 @@ export function isAlias(repository: string): boolean { } export function isOCIRegistry( - repository: Repository | string | undefined + repository: Repository | string | null | undefined ): boolean { - if (typeof repository === 'undefined') { + if (is.nullOrUndefined(repository)) { return false; } - - let string = repository; - if (typeof repository === 'object') { - string = repository.repository; - } - - return (string as string).startsWith('oci://'); + const repo = is.string(repository) ? repository : repository.repository; + return repo.startsWith('oci://'); } export function aliasRecordToRepositories( From a1af38809b1fc68ce09796626ce964a4708d5252 Mon Sep 17 00:00:00 2001 From: Maurice Meyer Date: Tue, 17 Jan 2023 17:18:24 +0100 Subject: [PATCH 14/21] refactor: re-add OCI regex to helm extractor --- lib/modules/manager/helmv3/utils.ts | 1 + .../manager/terraform/extractors/resources/helm-release.ts | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/modules/manager/helmv3/utils.ts b/lib/modules/manager/helmv3/utils.ts index 3b9629349363ca..3e29cb0940d84a 100644 --- a/lib/modules/manager/helmv3/utils.ts +++ b/lib/modules/manager/helmv3/utils.ts @@ -1,3 +1,4 @@ +import is from '@sindresorhus/is'; import upath from 'upath'; import { logger } from '../../../logger'; import { DockerDatasource } from '../../datasource/docker'; diff --git a/lib/modules/manager/terraform/extractors/resources/helm-release.ts b/lib/modules/manager/terraform/extractors/resources/helm-release.ts index 171d2ed4171cf8..3046a34582a79a 100644 --- a/lib/modules/manager/terraform/extractors/resources/helm-release.ts +++ b/lib/modules/manager/terraform/extractors/resources/helm-release.ts @@ -1,10 +1,13 @@ import is from '@sindresorhus/is'; +import { regEx } from '../../../../../util/regex'; import { DockerDatasource } from '../../../../datasource/docker'; import { HelmDatasource } from '../../../../datasource/helm'; import { isOCIRegistry } from '../../../helmv3/utils'; import type { PackageDependency } from '../../../types'; import { DependencyExtractor } from '../../base'; -import { checkIfStringIsPath, ociRegex } from '../../util'; +import { checkIfStringIsPath } from '../../util'; + +const ociRegex = regEx(/^oci:\/\//); export class HelmReleaseExtractor extends DependencyExtractor { getCheckList(): string[] { From 89bb93b82ec395d7ebd3cad5c7c5dcb141a728ca Mon Sep 17 00:00:00 2001 From: Morre Date: Wed, 18 Jan 2023 09:12:27 +0100 Subject: [PATCH 15/21] test: add test for isOCIRegistry null and undefined cases I went with the layout of the existing tests to not add further complication to the PR review. --- lib/modules/manager/helmv3/utils.spec.ts | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/lib/modules/manager/helmv3/utils.spec.ts b/lib/modules/manager/helmv3/utils.spec.ts index 05297684081945..8515474f0299d3 100644 --- a/lib/modules/manager/helmv3/utils.spec.ts +++ b/lib/modules/manager/helmv3/utils.spec.ts @@ -1,4 +1,4 @@ -import { isAlias, resolveAlias } from './utils'; +import { isAlias, isOCIRegistry, resolveAlias } from './utils'; describe('modules/manager/helmv3/utils', () => { describe('.resolveAlias()', () => { @@ -70,4 +70,18 @@ describe('modules/manager/helmv3/utils', () => { expect(repository).toBeFalse(); }); }); + + describe('.isOCIRegistry()', () => { + it('return false if repository is null', () => { + // TODO #7154 + const repository = isOCIRegistry(null as never); + expect(repository).toBeFalse(); + }); + + it('return false if repository is undefined', () => { + // TODO #7154 + const repository = isOCIRegistry(undefined as never); + expect(repository).toBeFalse(); + }); + }); }); From 690dc0d497e98fb2be167ed85d7c37f023454c70 Mon Sep 17 00:00:00 2001 From: Morre Date: Thu, 19 Jan 2023 14:38:13 +0100 Subject: [PATCH 16/21] Update lib/modules/manager/terraform/extractors/resources/helm-release.ts Co-authored-by: Michael Kriese --- .../manager/terraform/extractors/resources/helm-release.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/modules/manager/terraform/extractors/resources/helm-release.ts b/lib/modules/manager/terraform/extractors/resources/helm-release.ts index 3046a34582a79a..deaa7448196f18 100644 --- a/lib/modules/manager/terraform/extractors/resources/helm-release.ts +++ b/lib/modules/manager/terraform/extractors/resources/helm-release.ts @@ -34,7 +34,7 @@ export class HelmReleaseExtractor extends DependencyExtractor { dep.skipReason = 'invalid-name'; } else if (isOCIRegistry(helmRelease.chart)) { // For oci charts, we remove the oci:// and use the docker datasource - dep.depName = helmRelease.chart.replace(ociRegex, ''); + dep.depName = helmRelease.chart.replace('oci://', ''); dep.datasource = DockerDatasource.id; } else if (checkIfStringIsPath(helmRelease.chart)) { dep.skipReason = 'local-chart'; From 3a0e66fba15fb8660bc8e453878897e36d37853d Mon Sep 17 00:00:00 2001 From: Morre Date: Thu, 19 Jan 2023 14:38:24 +0100 Subject: [PATCH 17/21] Update lib/modules/manager/helmv3/utils.spec.ts Co-authored-by: Michael Kriese --- lib/modules/manager/helmv3/utils.spec.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/modules/manager/helmv3/utils.spec.ts b/lib/modules/manager/helmv3/utils.spec.ts index 8515474f0299d3..8f8a49aa299068 100644 --- a/lib/modules/manager/helmv3/utils.spec.ts +++ b/lib/modules/manager/helmv3/utils.spec.ts @@ -73,8 +73,7 @@ describe('modules/manager/helmv3/utils', () => { describe('.isOCIRegistry()', () => { it('return false if repository is null', () => { - // TODO #7154 - const repository = isOCIRegistry(null as never); + const repository = isOCIRegistry(null); expect(repository).toBeFalse(); }); From 9b06be3cd3aa53032b0fd0f2bd49344739c8ce93 Mon Sep 17 00:00:00 2001 From: Morre Date: Thu, 19 Jan 2023 14:38:59 +0100 Subject: [PATCH 18/21] Update lib/modules/manager/helmv3/utils.spec.ts Co-authored-by: Michael Kriese --- lib/modules/manager/helmv3/utils.spec.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/modules/manager/helmv3/utils.spec.ts b/lib/modules/manager/helmv3/utils.spec.ts index 8f8a49aa299068..a83ce2d38ded8e 100644 --- a/lib/modules/manager/helmv3/utils.spec.ts +++ b/lib/modules/manager/helmv3/utils.spec.ts @@ -78,8 +78,7 @@ describe('modules/manager/helmv3/utils', () => { }); it('return false if repository is undefined', () => { - // TODO #7154 - const repository = isOCIRegistry(undefined as never); + const repository = isOCIRegistry(undefined); expect(repository).toBeFalse(); }); }); From 50c8df36940b9b18791722851e2011a7d9683f75 Mon Sep 17 00:00:00 2001 From: Morre Date: Thu, 19 Jan 2023 14:39:14 +0100 Subject: [PATCH 19/21] Update lib/modules/manager/terraform/extractors/resources/helm-release.ts Co-authored-by: Michael Kriese --- .../manager/terraform/extractors/resources/helm-release.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib/modules/manager/terraform/extractors/resources/helm-release.ts b/lib/modules/manager/terraform/extractors/resources/helm-release.ts index deaa7448196f18..a6ad256e8a6e9b 100644 --- a/lib/modules/manager/terraform/extractors/resources/helm-release.ts +++ b/lib/modules/manager/terraform/extractors/resources/helm-release.ts @@ -7,8 +7,6 @@ import type { PackageDependency } from '../../../types'; import { DependencyExtractor } from '../../base'; import { checkIfStringIsPath } from '../../util'; -const ociRegex = regEx(/^oci:\/\//); - export class HelmReleaseExtractor extends DependencyExtractor { getCheckList(): string[] { return [`"helm_release"`]; From c48e9ddabb56331ebc4a6b89452d383cbc77a05b Mon Sep 17 00:00:00 2001 From: Morre Date: Thu, 19 Jan 2023 14:39:34 +0100 Subject: [PATCH 20/21] Update lib/modules/manager/terraform/extractors/resources/helm-release.ts Co-authored-by: Michael Kriese --- .../manager/terraform/extractors/resources/helm-release.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/modules/manager/terraform/extractors/resources/helm-release.ts b/lib/modules/manager/terraform/extractors/resources/helm-release.ts index a6ad256e8a6e9b..a6ce15f200c514 100644 --- a/lib/modules/manager/terraform/extractors/resources/helm-release.ts +++ b/lib/modules/manager/terraform/extractors/resources/helm-release.ts @@ -1,5 +1,4 @@ import is from '@sindresorhus/is'; -import { regEx } from '../../../../../util/regex'; import { DockerDatasource } from '../../../../datasource/docker'; import { HelmDatasource } from '../../../../datasource/helm'; import { isOCIRegistry } from '../../../helmv3/utils'; From c8cdae910e551bc88ab464518b319661f6b086f9 Mon Sep 17 00:00:00 2001 From: Maurice Meyer Date: Thu, 19 Jan 2023 14:49:46 +0100 Subject: [PATCH 21/21] fixup! feat(manager/terraform): support OCI charts in helm_release --- lib/modules/manager/terraform/extract.spec.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/modules/manager/terraform/extract.spec.ts b/lib/modules/manager/terraform/extract.spec.ts index bb81ecbd144704..978645438fc477 100644 --- a/lib/modules/manager/terraform/extract.spec.ts +++ b/lib/modules/manager/terraform/extract.spec.ts @@ -622,7 +622,6 @@ describe('modules/manager/terraform/extract', () => { datasource: 'docker', depName: 'public.ecr.aws/karpenter/karpenter', depType: 'helm_release', - registryUrls: [undefined], }, ]); });