diff --git a/lib/modules/manager/terraform/extract.spec.ts b/lib/modules/manager/terraform/extract.spec.ts index 4c5d53346d459f..cbdea0323c7c01 100644 --- a/lib/modules/manager/terraform/extract.spec.ts +++ b/lib/modules/manager/terraform/extract.spec.ts @@ -7,18 +7,18 @@ import type { RepoGlobalConfig } from '../../../config/types'; import * as hashicorp from '../../versioning/hashicorp'; import { extractPackageFile } from '.'; -const modules = Fixtures?.get('modules.tf'); -const bitbucketModules = Fixtures?.get('bitbucketModules.tf'); -const azureDevOpsModules = Fixtures?.get('azureDevOpsModules.tf'); -const providers = Fixtures?.get('providers.tf'); -const docker = Fixtures?.get('docker.tf'); -const kubernetes = Fixtures?.get('kubernetes.tf'); +const modules = Fixtures.get('modules.tf'); +const bitbucketModules = Fixtures.get('bitbucketModules.tf'); +const azureDevOpsModules = Fixtures.get('azureDevOpsModules.tf'); +const providers = Fixtures.get('providers.tf'); +const docker = Fixtures.get('docker.tf'); +const kubernetes = Fixtures.get('kubernetes.tf'); -const helm = Fixtures?.get('helm.tf'); -const lockedVersion = Fixtures?.get('lockedVersion.tf'); -const lockedVersionLockfile = Fixtures?.get('rangeStrategy.hcl'); -const terraformBlock = Fixtures?.get('terraformBlock.tf'); -const tfeWorkspaceBlock = Fixtures?.get('tfeWorkspace.tf'); +const helm = Fixtures.get('helm.tf'); +const lockedVersion = Fixtures.get('lockedVersion.tf'); +const lockedVersionLockfile = Fixtures.get('rangeStrategy.hcl'); +const terraformBlock = Fixtures.get('terraformBlock.tf'); +const tfeWorkspaceBlock = Fixtures.get('tfeWorkspace.tf'); const adminConfig: RepoGlobalConfig = { // `join` fixes Windows CI @@ -602,7 +602,6 @@ describe('modules/manager/terraform/extract', () => { datasource: 'helm', depName: undefined, depType: 'helm_release', - registryUrls: ['https://charts.helm.sh/stable'], skipReason: 'invalid-name', }, { @@ -629,7 +628,7 @@ describe('modules/manager/terraform/extract', () => { datasource: 'docker', depName: 'karpenter', depType: 'helm_release', - registryUrls: ['https://public.ecr.aws/karpenter'], + packageName: 'public.ecr.aws/karpenter/karpenter', }, ]); }); diff --git a/lib/modules/manager/terraform/extractors/resources/helm-release.ts b/lib/modules/manager/terraform/extractors/resources/helm-release.ts index 87d6375a1bbef7..c0c54a3b20ce8f 100644 --- a/lib/modules/manager/terraform/extractors/resources/helm-release.ts +++ b/lib/modules/manager/terraform/extractors/resources/helm-release.ts @@ -1,5 +1,6 @@ import is from '@sindresorhus/is'; import { logger } from '../../../../../logger'; +import { joinUrlParts } from '../../../../../util/url'; import { DockerDatasource } from '../../../../datasource/docker'; import { HelmDatasource } from '../../../../datasource/helm'; import { isOCIRegistry } from '../../../helmv3/utils'; @@ -37,18 +38,10 @@ export class HelmReleaseExtractor extends DependencyExtractor { depName: helmRelease.chart, datasource: HelmDatasource.id, }; - if (is.nonEmptyString(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) { + + dependencies.push(dep); + + if (!is.nonEmptyString(helmRelease.chart)) { dep.skipReason = 'invalid-name'; } else if (isOCIRegistry(helmRelease.chart)) { // For oci charts, we remove the oci:// and use the docker datasource @@ -56,9 +49,20 @@ export class HelmReleaseExtractor extends DependencyExtractor { dep.datasource = DockerDatasource.id; } else if (checkIfStringIsPath(helmRelease.chart)) { dep.skipReason = 'local-chart'; + } else if (is.nonEmptyString(helmRelease.repository)) { + if (isOCIRegistry(helmRelease.repository)) { + { + // For oci repos, we remove the oci://, join the chart name and use the docker datasource + dep.packageName = joinUrlParts( + helmRelease.repository.replace('oci://', ''), + helmRelease.chart + ); + dep.datasource = DockerDatasource.id; + } + } else { + dep.registryUrls = [helmRelease.repository]; + } } - - dependencies.push(dep); } return dependencies;