From c900030416a225e1ed7b568166c70f150f7c96b6 Mon Sep 17 00:00:00 2001 From: Maurice Meyer Date: Fri, 4 Mar 2022 12:39:47 +0100 Subject: [PATCH 1/9] feat(terraform): add support for terraform_version in tfe_workspace blocks Resolves #12251. --- .../tfeWorkspaceTerraformVersion.tf | 6 +++++ .../__snapshots__/extract.spec.ts.snap | 14 ++++++++++++ lib/modules/manager/terraform/common.ts | 4 ++++ lib/modules/manager/terraform/extract.spec.ts | 12 ++++++++++ lib/modules/manager/terraform/extract.ts | 1 + lib/modules/manager/terraform/readme.md | 22 ++++++++++--------- lib/modules/manager/terraform/resources.ts | 11 ++++++++++ 7 files changed, 60 insertions(+), 10 deletions(-) create mode 100644 lib/modules/manager/terraform/__fixtures__/tfeWorkspaceTerraformVersion.tf diff --git a/lib/modules/manager/terraform/__fixtures__/tfeWorkspaceTerraformVersion.tf b/lib/modules/manager/terraform/__fixtures__/tfeWorkspaceTerraformVersion.tf new file mode 100644 index 00000000000000..f26c8237656fce --- /dev/null +++ b/lib/modules/manager/terraform/__fixtures__/tfeWorkspaceTerraformVersion.tf @@ -0,0 +1,6 @@ +resource "tfe_workspace" "test_workspace" { + name = "test-workspace" + organization = "renovate-fixtures" + + terraform_version = "1.1.6" +} diff --git a/lib/modules/manager/terraform/__snapshots__/extract.spec.ts.snap b/lib/modules/manager/terraform/__snapshots__/extract.spec.ts.snap index a93787e6cb678f..1f9c3b278ee686 100644 --- a/lib/modules/manager/terraform/__snapshots__/extract.spec.ts.snap +++ b/lib/modules/manager/terraform/__snapshots__/extract.spec.ts.snap @@ -447,6 +447,20 @@ Object { } `; +exports[`modules/manager/terraform/extract extractPackageFile() extracts terraform_version for tfe_workspace 1`] = ` +Object { + "deps": Array [ + Object { + "currentValue": "1.1.6", + "datasource": "github-tags", + "depName": "hashicorp/terraform", + "depType": "required_version", + "extractVersion": "v(?.*)$", + }, + ], +} +`; + exports[`modules/manager/terraform/extract extractPackageFile() test terraform block with only requirement_terraform_version 1`] = ` Object { "deps": Array [ diff --git a/lib/modules/manager/terraform/common.ts b/lib/modules/manager/terraform/common.ts index e66d74fad011a1..8e168d7d02b884 100644 --- a/lib/modules/manager/terraform/common.ts +++ b/lib/modules/manager/terraform/common.ts @@ -30,4 +30,8 @@ export enum TerraformResourceTypes { * https://www.terraform.io/docs/providers/helm/r/release.html */ helm_release = 'helm_release', + /** + * https://registry.terraform.io/providers/hashicorp/tfe/latest/docs/resources/workspace + */ + tfe_workspace = 'tfe_workspace', } diff --git a/lib/modules/manager/terraform/extract.spec.ts b/lib/modules/manager/terraform/extract.spec.ts index e7defaabdf129d..1e80f2ab782e7a 100644 --- a/lib/modules/manager/terraform/extract.spec.ts +++ b/lib/modules/manager/terraform/extract.spec.ts @@ -17,6 +17,7 @@ const helm = loadFixture('helm.tf'); const lockedVersion = loadFixture('lockedVersion.tf'); const lockedVersionLockfile = loadFixture('rangeStrategy.hcl'); const terraformBlock = loadFixture('terraformBlock.tf'); +const tfeWorkspaceBlock = loadFixture('tfeWorkspaceTerraformVersion.tf'); const adminConfig: RepoGlobalConfig = { // `join` fixes Windows CI @@ -99,5 +100,16 @@ describe('modules/manager/terraform/extract', () => { expect(res.deps.filter((dep) => dep.skipReason)).toHaveLength(0); expect(res).toMatchSnapshot(); }); + + it('extracts terraform_version for tfe_workspace', async () => { + const res = await extractPackageFile( + tfeWorkspaceBlock, + 'tfeWorkspaceTerraformVersion.tf', + {} + ); + expect(res).toMatchSnapshot(); + expect(res.deps).toHaveLength(1); + expect(res.deps.filter((dep) => dep.skipReason)).toHaveLength(0); + }); }); }); diff --git a/lib/modules/manager/terraform/extract.ts b/lib/modules/manager/terraform/extract.ts index 5998458c2f68db..98a64f38814243 100644 --- a/lib/modules/manager/terraform/extract.ts +++ b/lib/modules/manager/terraform/extract.ts @@ -37,6 +37,7 @@ const contentCheckList = [ ' "helm_release" ', ' "docker_image" ', 'required_version', + 'terraform_version', ]; export async function extractPackageFile( diff --git a/lib/modules/manager/terraform/readme.md b/lib/modules/manager/terraform/readme.md index 50c204b2300a3a..5cf4034c07d7cb 100644 --- a/lib/modules/manager/terraform/readme.md +++ b/lib/modules/manager/terraform/readme.md @@ -13,6 +13,8 @@ Currently, Terraform supports renovating the following dependencies, where sub p - chart repository ( Public and Private ) - docker\_\* - Docker registry ( Public and Private ) +- [tfe_workspace](https://registry.terraform.io/providers/hashicorp/tfe/latest/docs/resources/workspace) resource (tfe provider) + - `terraform_version` argument Terraform range constraints are supported: @@ -24,15 +26,15 @@ Terraform range constraints are supported: For fine-grained control, e.g. to turn off only parts of this manager, you can use the following `depTypes`: -| resource | depType | -| --------------------------- | :-----------------: | -| Terraform provider | `provider` | -| required Terraform provider | `required_provider` | -| required Terraform version | `required_version` | -| Terraform module | `module` | -| Helm release | `helm_release` | -| Docker container | `docker_container` | -| Docker image | `docker_image` | -| Docker service | `docker_service` | +| resource | depType | Notes | +| --------------------------- | :-----------------: | :------------------------------------------------------------------------------------------------------------------: | +| Terraform provider | `provider` | | +| required Terraform provider | `required_provider` | | +| required Terraform version | `required_version` | This handles both `required_version` in terraform blocks as well as `terraform_version` in `tfe_workspace` resources | +| Terraform module | `module` | | +| Helm release | `helm_release` | | +| Docker container | `docker_container` | | +| Docker image | `docker_image` | | +| Docker service | `docker_service` | | If you need to change the versioning format, read the [versioning](https://docs.renovatebot.com/modules/versioning/) documentation to learn more. diff --git a/lib/modules/manager/terraform/resources.ts b/lib/modules/manager/terraform/resources.ts index 7f3f618c0b281d..58d5063ab7a3e8 100644 --- a/lib/modules/manager/terraform/resources.ts +++ b/lib/modules/manager/terraform/resources.ts @@ -3,6 +3,7 @@ import { getDep } from '../dockerfile/extract'; import type { PackageDependency } from '../types'; import { TerraformDependencyTypes, TerraformResourceTypes } from './common'; import type { ExtractionResult, ResourceManagerData } from './types'; +import { analyseTerraformVersion } from './required-version'; import { checkIfStringIsPath, keyValueExtractionRegex, @@ -32,10 +33,15 @@ export function extractTerraformResource( const typeMatch = resourceTypeExtractionRegex.exec(line); + // Sets the resourceType, e.g. "helm_release" 'resource "helm_release" "test_release"' dep.managerData.resourceType = TerraformResourceTypes[typeMatch?.groups?.type] ?? TerraformResourceTypes.unknown; + /** + * Iterates over all lines of the resource to extract the relevant key value pairs, + * e.g. the chart name for helm charts or the terraform_version for tfe_workspace + */ do { lineNumber += 1; line = lines[lineNumber]; @@ -49,6 +55,7 @@ export function extractTerraformResource( dep.managerData[kvMatch.groups.key] = kvMatch.groups.value; break; case 'version': + case 'terraform_version': dep.currentValue = kvMatch.groups.value; break; default: @@ -104,6 +111,10 @@ export function analyseTerraformResource( dep.datasource = HelmDatasource.id; break; + case TerraformResourceTypes.tfe_workspace: + analyseTerraformVersion(dep); + break; + default: dep.skipReason = 'invalid-value'; break; From 2501fc84303d39ebdb4ea65d69487c1662e79eca Mon Sep 17 00:00:00 2001 From: Maurice Meyer Date: Fri, 4 Mar 2022 14:40:55 +0100 Subject: [PATCH 2/9] fix(terraform): import order --- lib/modules/manager/terraform/resources.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/modules/manager/terraform/resources.ts b/lib/modules/manager/terraform/resources.ts index 58d5063ab7a3e8..9cdf0a2c71d1ed 100644 --- a/lib/modules/manager/terraform/resources.ts +++ b/lib/modules/manager/terraform/resources.ts @@ -2,8 +2,8 @@ import { HelmDatasource } from '../../datasource/helm'; import { getDep } from '../dockerfile/extract'; import type { PackageDependency } from '../types'; import { TerraformDependencyTypes, TerraformResourceTypes } from './common'; -import type { ExtractionResult, ResourceManagerData } from './types'; import { analyseTerraformVersion } from './required-version'; +import type { ExtractionResult, ResourceManagerData } from './types'; import { checkIfStringIsPath, keyValueExtractionRegex, From 95edd6f4d5490a12a78c0aaa75179103abdce61b Mon Sep 17 00:00:00 2001 From: Morre Meyer Date: Fri, 11 Mar 2022 14:54:24 +0100 Subject: [PATCH 3/9] Update lib/modules/manager/terraform/extract.ts Co-authored-by: Sebastian Poxhofer --- lib/modules/manager/terraform/extract.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/modules/manager/terraform/extract.ts b/lib/modules/manager/terraform/extract.ts index 98a64f38814243..ce2580c55f3cf8 100644 --- a/lib/modules/manager/terraform/extract.ts +++ b/lib/modules/manager/terraform/extract.ts @@ -37,7 +37,7 @@ const contentCheckList = [ ' "helm_release" ', ' "docker_image" ', 'required_version', - 'terraform_version', + 'terraform_version', // part of tfe_workspace ]; export async function extractPackageFile( From 5df598143f1a0cc5e76e90777575421cae71c112 Mon Sep 17 00:00:00 2001 From: Morre Meyer Date: Fri, 11 Mar 2022 14:54:47 +0100 Subject: [PATCH 4/9] Update lib/modules/manager/terraform/readme.md Co-authored-by: Sebastian Poxhofer --- lib/modules/manager/terraform/readme.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/modules/manager/terraform/readme.md b/lib/modules/manager/terraform/readme.md index 5cf4034c07d7cb..c6baf840ff03d4 100644 --- a/lib/modules/manager/terraform/readme.md +++ b/lib/modules/manager/terraform/readme.md @@ -13,8 +13,7 @@ Currently, Terraform supports renovating the following dependencies, where sub p - chart repository ( Public and Private ) - docker\_\* - Docker registry ( Public and Private ) -- [tfe_workspace](https://registry.terraform.io/providers/hashicorp/tfe/latest/docs/resources/workspace) resource (tfe provider) - - `terraform_version` argument +- [tfe_workspace](https://registry.terraform.io/providers/hashicorp/tfe/latest/docs/resources/workspace) ( `terraform_version` argument ) Terraform range constraints are supported: From 8c254a9c1cffa9c5bfb84700ae67bb1d752807bf Mon Sep 17 00:00:00 2001 From: Morre Meyer Date: Fri, 11 Mar 2022 14:55:04 +0100 Subject: [PATCH 5/9] Update lib/modules/manager/terraform/resources.ts Co-authored-by: Sebastian Poxhofer --- lib/modules/manager/terraform/resources.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/modules/manager/terraform/resources.ts b/lib/modules/manager/terraform/resources.ts index 9cdf0a2c71d1ed..3b5431c772b397 100644 --- a/lib/modules/manager/terraform/resources.ts +++ b/lib/modules/manager/terraform/resources.ts @@ -113,6 +113,7 @@ export function analyseTerraformResource( case TerraformResourceTypes.tfe_workspace: analyseTerraformVersion(dep); + dep.depType = 'tfe_workspace'; break; default: From dea727dce94e23a26c58f281366187626220af54 Mon Sep 17 00:00:00 2001 From: Maurice Meyer Date: Fri, 11 Mar 2022 15:00:17 +0100 Subject: [PATCH 6/9] docs: update depTypes --- lib/modules/manager/terraform/readme.md | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/lib/modules/manager/terraform/readme.md b/lib/modules/manager/terraform/readme.md index c6baf840ff03d4..d158f3e0803592 100644 --- a/lib/modules/manager/terraform/readme.md +++ b/lib/modules/manager/terraform/readme.md @@ -25,15 +25,16 @@ Terraform range constraints are supported: For fine-grained control, e.g. to turn off only parts of this manager, you can use the following `depTypes`: -| resource | depType | Notes | -| --------------------------- | :-----------------: | :------------------------------------------------------------------------------------------------------------------: | -| Terraform provider | `provider` | | -| required Terraform provider | `required_provider` | | -| required Terraform version | `required_version` | This handles both `required_version` in terraform blocks as well as `terraform_version` in `tfe_workspace` resources | -| Terraform module | `module` | | -| Helm release | `helm_release` | | -| Docker container | `docker_container` | | -| Docker image | `docker_image` | | -| Docker service | `docker_service` | | +| resource | depType | Notes | +| --------------------------- | :-----------------: | :------------------------------------------------------------------------: | +| Terraform provider | `provider` | | +| required Terraform provider | `required_provider` | | +| required Terraform version | `required_version` | This handles the `required_version` in terraform blocks | +| TFE workspace | `tfe_workspace` | This handles the `terraform_version` argument in `tfe_workspace` resources | +| Terraform module | `module` | | +| Helm release | `helm_release` | | +| Docker container | `docker_container` | | +| Docker image | `docker_image` | | +| Docker service | `docker_service` | | If you need to change the versioning format, read the [versioning](https://docs.renovatebot.com/modules/versioning/) documentation to learn more. From dea4f99845807b8fd99872415b4fc83579bee267 Mon Sep 17 00:00:00 2001 From: Maurice Meyer Date: Fri, 11 Mar 2022 15:14:55 +0100 Subject: [PATCH 7/9] fixup! Update lib/modules/manager/terraform/resources.ts --- .../manager/terraform/__snapshots__/extract.spec.ts.snap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/modules/manager/terraform/__snapshots__/extract.spec.ts.snap b/lib/modules/manager/terraform/__snapshots__/extract.spec.ts.snap index 1f9c3b278ee686..f6de432e5a7e4a 100644 --- a/lib/modules/manager/terraform/__snapshots__/extract.spec.ts.snap +++ b/lib/modules/manager/terraform/__snapshots__/extract.spec.ts.snap @@ -454,7 +454,7 @@ Object { "currentValue": "1.1.6", "datasource": "github-tags", "depName": "hashicorp/terraform", - "depType": "required_version", + "depType": "tfe_workspace", "extractVersion": "v(?.*)$", }, ], From bd9326785f15eae7f116299b638f198fcb374848 Mon Sep 17 00:00:00 2001 From: Maurice Meyer Date: Fri, 11 Mar 2022 15:15:20 +0100 Subject: [PATCH 8/9] test: tfe_workspace without terraform_version --- .../__fixtures__/tfeWorkspaceNoTerraformVersion.tf | 4 ++++ .../terraform/__snapshots__/extract.spec.ts.snap | 2 ++ lib/modules/manager/terraform/extract.spec.ts | 10 ++++++++++ 3 files changed, 16 insertions(+) create mode 100644 lib/modules/manager/terraform/__fixtures__/tfeWorkspaceNoTerraformVersion.tf diff --git a/lib/modules/manager/terraform/__fixtures__/tfeWorkspaceNoTerraformVersion.tf b/lib/modules/manager/terraform/__fixtures__/tfeWorkspaceNoTerraformVersion.tf new file mode 100644 index 00000000000000..715c2cbaa9f24d --- /dev/null +++ b/lib/modules/manager/terraform/__fixtures__/tfeWorkspaceNoTerraformVersion.tf @@ -0,0 +1,4 @@ +resource "tfe_workspace" "test_workspace" { + name = "test-workspace" + organization = "renovate-fixtures" +} diff --git a/lib/modules/manager/terraform/__snapshots__/extract.spec.ts.snap b/lib/modules/manager/terraform/__snapshots__/extract.spec.ts.snap index f6de432e5a7e4a..6e15659278bc4f 100644 --- a/lib/modules/manager/terraform/__snapshots__/extract.spec.ts.snap +++ b/lib/modules/manager/terraform/__snapshots__/extract.spec.ts.snap @@ -476,6 +476,8 @@ Object { } `; +exports[`modules/manager/terraform/extract extractPackageFile() test tfe_workspace without terraform_version 1`] = `null`; + exports[`modules/manager/terraform/extract extractPackageFile() update lockfile constraints with range strategy update-lockfile 1`] = ` Object { "deps": Array [ diff --git a/lib/modules/manager/terraform/extract.spec.ts b/lib/modules/manager/terraform/extract.spec.ts index 1e80f2ab782e7a..c9f98eeaa51a9d 100644 --- a/lib/modules/manager/terraform/extract.spec.ts +++ b/lib/modules/manager/terraform/extract.spec.ts @@ -18,6 +18,7 @@ const lockedVersion = loadFixture('lockedVersion.tf'); const lockedVersionLockfile = loadFixture('rangeStrategy.hcl'); const terraformBlock = loadFixture('terraformBlock.tf'); const tfeWorkspaceBlock = loadFixture('tfeWorkspaceTerraformVersion.tf'); +const tfeWorkspaceNoVersion = loadFixture('tfeWorkspaceNoTerraformVersion.tf'); const adminConfig: RepoGlobalConfig = { // `join` fixes Windows CI @@ -111,5 +112,14 @@ describe('modules/manager/terraform/extract', () => { expect(res.deps).toHaveLength(1); expect(res.deps.filter((dep) => dep.skipReason)).toHaveLength(0); }); + + it('test tfe_workspace without terraform_version', async () => { + const res = await extractPackageFile( + tfeWorkspaceNoVersion, + 'tfeWorkspaceNoTerraformVersion.tf', + {} + ); + expect(res).toMatchSnapshot(); + }); }); }); From c9a39b6e45cdb707beb009d7f06572194b96bde8 Mon Sep 17 00:00:00 2001 From: Maurice Meyer Date: Mon, 14 Mar 2022 09:55:27 +0100 Subject: [PATCH 9/9] fix: skipReason not set for missing version --- ...aceTerraformVersion.tf => tfeWorkspace.tf} | 5 +++++ .../tfeWorkspaceNoTerraformVersion.tf | 4 ---- .../__snapshots__/extract.spec.ts.snap | 7 ++++--- lib/modules/manager/terraform/extract.spec.ts | 20 +++++-------------- lib/modules/manager/terraform/resources.ts | 8 ++++++-- 5 files changed, 20 insertions(+), 24 deletions(-) rename lib/modules/manager/terraform/__fixtures__/{tfeWorkspaceTerraformVersion.tf => tfeWorkspace.tf} (55%) delete mode 100644 lib/modules/manager/terraform/__fixtures__/tfeWorkspaceNoTerraformVersion.tf diff --git a/lib/modules/manager/terraform/__fixtures__/tfeWorkspaceTerraformVersion.tf b/lib/modules/manager/terraform/__fixtures__/tfeWorkspace.tf similarity index 55% rename from lib/modules/manager/terraform/__fixtures__/tfeWorkspaceTerraformVersion.tf rename to lib/modules/manager/terraform/__fixtures__/tfeWorkspace.tf index f26c8237656fce..17477f65cba7d6 100644 --- a/lib/modules/manager/terraform/__fixtures__/tfeWorkspaceTerraformVersion.tf +++ b/lib/modules/manager/terraform/__fixtures__/tfeWorkspace.tf @@ -4,3 +4,8 @@ resource "tfe_workspace" "test_workspace" { terraform_version = "1.1.6" } + +resource "tfe_workspace" "test_workspace" { + name = "test-workspace" + organization = "renovate-fixtures" +} diff --git a/lib/modules/manager/terraform/__fixtures__/tfeWorkspaceNoTerraformVersion.tf b/lib/modules/manager/terraform/__fixtures__/tfeWorkspaceNoTerraformVersion.tf deleted file mode 100644 index 715c2cbaa9f24d..00000000000000 --- a/lib/modules/manager/terraform/__fixtures__/tfeWorkspaceNoTerraformVersion.tf +++ /dev/null @@ -1,4 +0,0 @@ -resource "tfe_workspace" "test_workspace" { - name = "test-workspace" - organization = "renovate-fixtures" -} diff --git a/lib/modules/manager/terraform/__snapshots__/extract.spec.ts.snap b/lib/modules/manager/terraform/__snapshots__/extract.spec.ts.snap index 6e15659278bc4f..bc2084b3ff85bd 100644 --- a/lib/modules/manager/terraform/__snapshots__/extract.spec.ts.snap +++ b/lib/modules/manager/terraform/__snapshots__/extract.spec.ts.snap @@ -447,7 +447,7 @@ Object { } `; -exports[`modules/manager/terraform/extract extractPackageFile() extracts terraform_version for tfe_workspace 1`] = ` +exports[`modules/manager/terraform/extract extractPackageFile() extracts terraform_version for tfe_workspace and ignores missing terraform_version keys 1`] = ` Object { "deps": Array [ Object { @@ -457,6 +457,9 @@ Object { "depType": "tfe_workspace", "extractVersion": "v(?.*)$", }, + Object { + "skipReason": "no-version", + }, ], } `; @@ -476,8 +479,6 @@ Object { } `; -exports[`modules/manager/terraform/extract extractPackageFile() test tfe_workspace without terraform_version 1`] = `null`; - exports[`modules/manager/terraform/extract extractPackageFile() update lockfile constraints with range strategy update-lockfile 1`] = ` Object { "deps": Array [ diff --git a/lib/modules/manager/terraform/extract.spec.ts b/lib/modules/manager/terraform/extract.spec.ts index c9f98eeaa51a9d..801f82f6a652af 100644 --- a/lib/modules/manager/terraform/extract.spec.ts +++ b/lib/modules/manager/terraform/extract.spec.ts @@ -17,8 +17,7 @@ const helm = loadFixture('helm.tf'); const lockedVersion = loadFixture('lockedVersion.tf'); const lockedVersionLockfile = loadFixture('rangeStrategy.hcl'); const terraformBlock = loadFixture('terraformBlock.tf'); -const tfeWorkspaceBlock = loadFixture('tfeWorkspaceTerraformVersion.tf'); -const tfeWorkspaceNoVersion = loadFixture('tfeWorkspaceNoTerraformVersion.tf'); +const tfeWorkspaceBlock = loadFixture('tfeWorkspace.tf'); const adminConfig: RepoGlobalConfig = { // `join` fixes Windows CI @@ -102,24 +101,15 @@ describe('modules/manager/terraform/extract', () => { expect(res).toMatchSnapshot(); }); - it('extracts terraform_version for tfe_workspace', async () => { + it('extracts terraform_version for tfe_workspace and ignores missing terraform_version keys', async () => { const res = await extractPackageFile( tfeWorkspaceBlock, - 'tfeWorkspaceTerraformVersion.tf', - {} - ); - expect(res).toMatchSnapshot(); - expect(res.deps).toHaveLength(1); - expect(res.deps.filter((dep) => dep.skipReason)).toHaveLength(0); - }); - - it('test tfe_workspace without terraform_version', async () => { - const res = await extractPackageFile( - tfeWorkspaceNoVersion, - 'tfeWorkspaceNoTerraformVersion.tf', + 'tfeWorkspace.tf', {} ); expect(res).toMatchSnapshot(); + expect(res.deps).toHaveLength(2); + expect(res.deps.filter((dep) => dep.skipReason)).toHaveLength(1); }); }); }); diff --git a/lib/modules/manager/terraform/resources.ts b/lib/modules/manager/terraform/resources.ts index 3b5431c772b397..26762dcb7dea65 100644 --- a/lib/modules/manager/terraform/resources.ts +++ b/lib/modules/manager/terraform/resources.ts @@ -112,8 +112,12 @@ export function analyseTerraformResource( break; case TerraformResourceTypes.tfe_workspace: - analyseTerraformVersion(dep); - dep.depType = 'tfe_workspace'; + if (dep.currentValue) { + analyseTerraformVersion(dep); + dep.depType = 'tfe_workspace'; + } else { + dep.skipReason = 'no-version'; + } break; default: