chore(deps): update terraform utils to v2 (release/v1)#112
Open
renovate[bot] wants to merge 1 commit into
Open
chore(deps): update terraform utils to v2 (release/v1)#112renovate[bot] wants to merge 1 commit into
renovate[bot] wants to merge 1 commit into
Conversation
|
/terratest |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
>= 1.7.1, < 2.0.0→< 3.0.0Release Notes
cloudposse/terraform-provider-utils (utils)
v2.5.0Compare Source
Update Atmos to v1.211.0 with base path fallback fix for CI without .git @aknysh (#538)
what
why
ATMOS_BASE_PATHis set to a relative path on CI workers (e.g., Spacelift) that lack a.gitdirectoryos.Stat+ CWD fallback totryResolveWithGitRoot, but missed the same fix intryResolveWithConfigPath— whengetGitRootOrEmpty()returns""(no.git), the code fell through totryResolveWithConfigPathwhich unconditionally joined with the config dir, producing wrong pathsbase_pathinatmos.yaml) try config dir firstreferences
v2.4.0Compare Source
feat: add process_templates and process_yaml_functions options to utils_component_config @Benbentwo (#535)
Summary
process_templatesandprocess_yaml_functionsoptional boolean attributes to theutils_component_configdata source, both defaulting tofalseWithProcessTemplates(false)/WithProcessYamlFunctions(false)calls with user-configurable values read from the schemaATMOS_PROCESS_TEMPLATESandATMOS_PROCESS_FUNCTIONSenvironment variables as defaults, enabling test environments and CI pipelines to toggle processing globally without changing Terraform codeProblem
In v2.1.0, template and YAML function processing was unconditionally disabled in
utils_component_configto fix a critical ETXTBSY crash caused by!terraform.outputYAML tags spawning childterraform initprocesses inside the provider plugin.However, this broke a common pattern where component backend configs use Go templates like
{{ .component }}and{{ getenv "..." }}. Whenutils_component_configreturns unresolved template strings in the backend config, theterraform_remote_statedata source receives literal template strings as S3 key paths and fails to find state files.Solution
Schema Attributes (per-data-source control)
Add two new optional boolean attributes to the
utils_component_configdata source:process_templatesboolfalseprocess_yaml_functionsboolfalse!terraform.output, etc.)Both default to
false, preserving the crash fix and full backwards compatibility.Environment Variable Defaults (global control)
The following environment variables can be used to set defaults globally:
ATMOS_PROCESS_TEMPLATESprocess_templatesdefaulttrue/1/yesorfalse/0/noATMOS_PROCESS_FUNCTIONSprocess_yaml_functionsdefaulttrue/1/yesorfalse/0/noThis allows test environments and CI pipelines to enable processing globally without modifying any Terraform code. The schema attribute always takes precedence when explicitly set.
Test plan
go build ./...succeedsfalse)ATMOS_PROCESS_TEMPLATES=trueenables template processing when attribute is not setATMOS_PROCESS_FUNCTIONS=trueenables YAML function processing when attribute is not setprocess_templates = falseoverridesATMOS_PROCESS_TEMPLATES=true🤖 Generated with Claude Code
v2.3.0Compare Source
Minor changes to cut new release v2 @goruha (#534)
what
why
v2.2.0binaries failed to pass the integrity hash sum checkv2.2.0Compare Source
Update Atmos to v1.210.1 with base path resolution fix @aknysh (#532)
what
ATMOS_BASE_PATHand--base-path/atmos_base_pathwith relative pathsdocs/fixes/why
Atmos v1.210.1 (cloudposse/atmos#2215) fixes
failed to find importerrors whenATMOS_BASE_PATHenv var (or--base-pathflag /atmos_base_pathprovider parameter) is set to a relative path like.terraform/modules/monorepo. Previously,resolveAbsolutePath()routed simple relative paths through git root discovery, which produced incorrect paths when CWD differed from the git root.What changed in Atmos v1.210.1
4-category path classification:
"", unset".","./foo","..","../foo""foo","foo/bar",".terraform/..."os.Statfallback to CWD"/abs/path"Source-aware resolution (
BasePathSource):ATMOS_BASE_PATH, CLI flag--base-path, provider paramatmos_base_path): dot-prefixed paths resolve relative to CWD (shell convention)base_pathinatmos.yaml): dot-prefixed paths resolve relative to the directory containingatmos.yaml(config-file convention)Git root fallback with
os.Statvalidation:tryResolveWithGitRoot()now validates the git-root-joined path withos.Stat. If the path doesn't exist at git root but does exist relative to CWD, it falls back to the CWD-relative path. This is strictly additive — if the git-root path exists, behavior is identical to before.Impact on the provider
Scenario-by-scenario analysis:
atmos_base_path(default)ATMOS_BASE_PATH=.terraform/modules/monorepo(bare path)tryResolveWithGitRoot→os.Statfallback to CWDATMOS_BASE_PATH=./.terraform/modules/monorepo(dot-prefixed)resolveDotPrefixPath→ CWD-relative (runtime source)base_path: "../../examples/tests"(test fixture)resolveDotPrefixPath→ config-dir-relativebase_path+ subdirectory (v1.202.0 feature)Risk assessment:
""/abs/path"foo/bar"os.Statfallback to CWD"./foo""../../path"New tests
TestComponentProcessorWithEmptyBasePathatmosBasePath(default provider behavior) returns correct resultsTestComponentProcessorFromContextWithEmptyBasePathatmosBasePathviaProcessComponentFromContextreturns correct resultsTestComponentProcessorWithRelativeBasePathbase_pathinatmos.yamlstill works after path resolution changesTestComponentProcessorWithProcessingDisabledAndEmptyPathTest results
All 7 test packages pass (15 existing + 4 new tests) with zero regressions:
references
docs/fixes/2026-03-18-base-path-resolution-for-relative-paths.mdSet GO_RELEASER_TARGET_COMMITISH in manual release workflow @aknysh (#531)
what
GO_RELEASER_TARGET_COMMITISH: mainenv var for the GoReleaser stepwhy
{{ .Branch }}resolves toHEAD.goreleaser.ymlusesGO_RELEASER_TARGET_COMMITISHastarget_commitishfor the GitHub release, falling back to{{ .Branch }}HEADas an invalidtarget_commitish, causing:POST .../releases: 422 Validation Failed [{Resource:Release Field:target_commitish Code:invalid}]references
Fix goreleaser dirty git state in manual release workflow @aknysh (#530)
what
.goreleaser.ymlto/tmp/and runsedon the copy instead of modifying the repo file--config /tmp/.goreleaser-patched.ymlto GoReleaserwhy
sedcommand that replaces{{ .Env.ARCHIVES_FORMAT }}was modifying.goreleaser.ymlin-place, causing GoReleaser to fail withgit is in a dirty statereferences
Fix manual release workflow: patch goreleaser config and bump timeout @aknysh (#529)
what
sedstep to replace{{ .Env.ARCHIVES_FORMAT }}withzipin.goreleaser.ymlbefore GoReleaser runswhy
{{ .Env.ARCHIVES_FORMAT }}in thearchives.formatfield, causinginvalid archive formaterrorshared-go-auto-release.yml) handles this with the samesedapproachreferences
Add manual release workflow for arbitrary tags @aknysh (#528)
what
workflow_dispatchworkflow (.github/workflows/manual-release.yml) that allows manually triggering a release for any existing git tagmake_latestoption to control whether the release is marked as "Latest"why
shared-go-auto-release.yml) always bumps from the highest semver tag, which produces v2.x releasesremote-statemodules that pin the provider to< 2references
v2.1.0Compare Source
Update Atmos to 1.209.0 @aknysh (#527)
what
WithProcessTemplates(false)andWithProcessYamlFunctions(false)to bothProcessComponentInStackandProcessComponentFromContextterraform-plugin-sdk/v2v2.40.0,terraform-plugin-gov0.31.0, etc.)why
ETXTBSYcrash on Linux: When stack YAML contains!terraform.outputtags, the provider (since atmos v1.207.0) eagerly resolves them by spawning childterraform initprocesses inside the provider plugin. These child processes conflict with the parent OpenTofu process's plugin cache, causing "text file busy" errors on Linux.true. This fix explicitly disables both, restoring the original behavior.utils_component_configdata source only needs backend config, workspace, and vars — not resolved template expressions or!terraform.outputvalues.references
docs/fixes/2026-03-09-disable-yaml-function-resolution-in-provider.mdv2.0.2Compare Source
🚀 Enhancements
Delete .goreleaser.yml @goruha (#525)
what
why
v2.0.0Compare Source
Update Atmos to v1.207.0 — fix plugin crash on newer atmos.yaml configs @aknysh (#522)
what
data "utils_component_config"plugin crash ("Plugin did not respond") that occurs when the provider's embedded Atmos version encounters neweratmos.yamlfeatures (stores,hooks,templates.settings.gomplate)pkg/componentto restoredpkg/describeforProcessComponentInStackandProcessComponentFromContext*AtmosConfigurationparameter toMergeWithOptionscalls (deep_merge_json,deep_merge_yaml)ansibleComponentsBasePathparameter toCreateSpaceliftStacksandProcessYAMLConfigFilescallsSliceOfInterfacesToSliceOfStringsto handle single return valuewhy
cloudposse/utilsprovider v1.31.0 embeds Atmos v1.189.0. When users run Atmos CLI v1.200+ and theiratmos.yaml/ stack files contain features that didn't exist in v1.189.0 (e.g.storesblock,hookswithstore-outputs,templates.settings.gomplate,!terraform.stateYAML tags), the provider panics duringcfg.InitCliConfig(), killing the gRPC plugin process. This blocks all components usingcloudposse/stack-config/yaml//modules/remote-state(56+ components in a typical infrastructure repo)pkg/component/component_processor.gowas deleted entirely (PR #1774). The two public functions the provider depends on (ProcessComponentInStack,ProcessComponentFromContext) were moved tointernal/exec(not importable). In Atmos v1.207.0, these functions were restored as public API inpkg/describe/component_processor.goatmos.yamlfiles that use all current Atmos features without panickingreferences
docs/fixes/2026-02-19-atmos-version-mismatch-plugin-crash.mdfor full root cause analysis, call chain, and scope of impactpkg/component)ProcessComponentInStackandProcessComponentFromContextinpkg/describeUse atmos instead of makefile @goruha (#501)
what
why
Fix release workflow @goruha (#499)
what
why
references
🤖 Automatic Updates
Added go linting @[dependabot[bot]](https://redirect.github.com/apps/dependabot) (#493)
what
why
References
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.