Releases: gruntwork-io/terragrunt
v0.80.1
v0.80.0
Terraform 1.12 support: We are now testing Terragrunt against Terraform 1.12 and is confirmed to be working.
NOTE: Although this release is marked as backward incompatible, it is functionally compatible as nothing has been changed in Terragrunt internals. The minor version release is useful to mark the change in Terraform version that is being tested.
What's Changed
- chore: Added support for Terraform 1.12 by @denis256 in #4317
- build(deps): bump github.com/aws/aws-sdk-go from 1.55.6 to 1.55.7 by @dependabot in #4300
- build(deps): bump cloud.google.com/go/storage from 1.51.0 to 1.53.0 by @dependabot in #4269
- build(deps): bump golang.org/x/sys from 0.32.0 to 0.33.0 by @dependabot in #4268
Full Changelog: v0.79.3...v0.80.0
v0.79.3
💪🏽 Enhancements
Limitation on Catalog URLs lifted
A limitation on only supporting recognized go-getter URL patters has been lifted from the catalog command.
The reason this limitation existed in the past was to ensure that users were able to have Terragrunt load module source code in browsers from the catalog Terminal User Interface (TUI). To support that, only a constrained set of sources were supported, to ensure that a button was available to pop open the link in the browser.


Terragrunt will now dynamically adjust the buttons available after module selection to gracefully degrade the experience, instead of completely rejecting repository sources that can't be predictably converted to browser URLs.

This allows more users to adopt the Terragrunt Catalog, while providing the same great user experience for users that are on fully supported platforms, like GitHub, GitLab, BitBucket, etc.
What's Changed
- feat: Allow unknown catalog URLs by @yhakbar in #4318
- docs: Clarify ambiguous documentation on variable precedence by @owattley-rotageek in #4319
- chore: Adjusting catalog implementation by @yhakbar in #4315
New Contributors
- @owattley-rotageek made their first contribution in #4319
Full Changelog: v0.79.2...v0.79.3
v0.79.2
🏎️ Performance Improvements
Improved overall performance by memoizing -version
output in each unit.
In a micro-benchmark on an M3 Max, using the BenchmarkManyEmptyTerragruntInits
benchmark, which tests the performance of a Terragrunt run --all init
across 1000 units, the following performance gains were released:
- 18% speed improvement.
- 9% memory reduction.
More optimizations of this sort are planned for future releases.
What's Changed
Full Changelog: v0.79.1...v0.79.2
v0.79.1
💪🏽 Enhancements
Recursive stack clean
Improved stack clean
to recursively delete all nested stack directories, ensuring thorough cleanup.
What's Changed
- feat: Enabled recursive deletion of stack directories in
stack clean
by @denis256 in #4313 - feat: Switching to GitHub Actions OIDC role assumption for OIDC test by @yhakbar in #4305
- fix: Corrected mislabeled
legacy-all
control in documentation by @yhakbar in #4311 - fix: Enabled disabled tests by @yhakbar in #4312
- docs: updated quick start documentation with additional output directory usage by @james03160927 in #4299
Full Changelog: v0.79.0...v0.79.1
v0.79.0
💪🏽 Enhancements
The run --all
command automatically generates Terragrunt Stacks
If you are using terragrunt.stack.hcl
files in your codebase, run --all
commands will now automatically expand all terragrunt.stack.hcl
files into generated stack configurations, as if you had run stack generate
before running the run --all
command.
e.g.
terragrunt run --all plan
Is now equivalent to:
terragrunt stack generate
terragrunt run --all plan
If you would like to disable this new behavior, you can use the --no-stack-generate
to opt out of automatic stack generation.
📖 Docs Updates
The Terragrunt v1 docs are open for feedback!
These docs will undergo significant adjustments, both stylistically, and functionality on the road to 1.0.
They are a full rewrite of the existing Terragrunt Docs site written in Jekyll to one using Starlight.
Your feedback is requested! If you are reading these release notes relatively soon after release, you should see a link at the top of the site where you can provide your feedback on the new docs.
What's Changed
- feat: Moving users over to terragrunt-v1.gruntwork.io docs by @yhakbar in #4202
- feat: Adding GTM by @yhakbar in #4285
- feat: Github Action tests migration by @denis256 in #4281
- feat: Automatically stack generate in run --all or run --graph command by @james03160927 in #4283
- feat: Adding cloud-nuke cron by @yhakbar in #4306
- feat: Adjusting nav height by @yhakbar in #4284
- fix: Fixing
remote-relative-with-slash
fixture on ARM tests by @yhakbar in #4297 - fix: Fixing install version by @yhakbar in #4310
- fix: Improved error handling in AWS docs by @denis256 in #4303
- chore: enable TestRemoteDownloadWithRelativePathAndSlashInBranch test by @denis256 in #4286
- build(deps): bump ruby/setup-ruby from 1.233.0 to 1.238.0 by @dependabot in #4270
- build(deps): bump github.com/gruntwork-io/terratest from 0.48.2 to 0.49.0 by @dependabot in #4267
- build(deps): bump ruby/setup-ruby from 1.238.0 to 1.242.0 by @dependabot in #4301
- build(deps): bump DavidAnson/markdownlint-cli2-action from 19 to 20 by @dependabot in #4302
New Contributors
- @james03160927 made their first contribution in #4283
Full Changelog: v0.78.4...v0.79.0
v0.78.4
✨ New Features
OpenTelemetry Trace Propogation
In anticipation of the introduction of OpenTelemetry support in OpenTofu 1.10, Terragrunt will now propagate the TRACEPARENT
environment variable to child processes to support OpenTelemetry traces that maintain context across Terragrunt and OpenTofu.
This work is based on @Yantrio 's PoC PR #4254, and is only useful due to his work adding OpenTelemtry in OpenTofu. Thank you!
What's Changed
- feat: Added generation of opentelemetry parent traces to invoked executables by @denis256 in #4278
- feat: Added support for Terraform tests in Github Action by @denis256 in #4275
- docs: Added homepage to Starlight docs by @yhakbar in #4250
Full Changelog: v0.78.3...v0.78.4
v0.78.3
🐛 Bug Fixes
When an error retry results in a plan succeeding when it initially failed, usage of run --all -- plan -detailed-exitcode
will now properly take into account the final exit code, rather than the first one, meaning that the exit code of the whole run will be zero if no other units fail their plans.
Thanks to @wakeful for contributing this fix!
What's Changed
- fix #3845 set the correct exit code when a retry is successful. by @wakeful in #3966
- docs: Improving Run Queue docs by @yhakbar in #4272
Full Changelog: v0.78.2...v0.78.3
alpha-2025051001
⚠️ Alpha Release
Terragrunt CLI configuration file
Config path
The path to the file can be specified using CLI arg --cli-config-file
(hidden) or env var TG_CLI_CONFIG_FILE
.
If the path is not specified explicitly, it tries to find in the following directories:
- In the specified TG working directory.
- In the repository root directory.
- In
.config
located in the repository root directory. - In config dirs, depending on the OS, for unix OS this may be
HOME
orXDG_CONFIG_HOME/terragrunt
directory.
For unix OS, the default file name is .terragruntrc.json
, for Windows is terragruntrc.json
.
Config keys and values
Configuration values have the lowest priority compared to CLI args and Env vars, and are thus overwritten when CLI args or env vars are explicitly specified.
The name of the key-values corresponds to the name of their flags, but with some exceptions for some of them. Global flags and flags belong to the run
command have the same keys as their CLI args, but for others you need to prepend the name of their commands. For example:
- The key for the
terragrunt --log-level
flag islog-level
- The key for the
terragrunt run --tf-forward-stdout
flag istf-forward-stdout
- The key for the
terragrunt list --format
flag islist-format
- The key for the
terragrunt hcl format --exclude-dir
flag ishcl-format-exclude-dir
The key names are case insensitive. You can also use _
in keys instead of -
. For example: hcl-format-exclude-dir
is equivalent to HCL-Format-exclude_diR
If a non-existent key is specified, a warning is be displayed. Log example:
WARN CLI configuration file contains unused keys: nooon_interactive
Configuration value validation is the same as CLI args validation. Log example:
ERROR Could not apply CLI config: invalid value "infoooo" for key "log-level": invalid level "infoooo", supported levels: stderr, stdout, error, warn, info, debug, trace
Debugging
Logging at level debug
outputs information indicating where the flag value was taken from. This way you can understand what value is used for the flag if the same flag was set in different places: cli-config, env-var or cli-args. Log example:
DEBUG Using cli-config "tf-path=tofu"
DEBUG Using cli-config "strict-control=[spin-up tear-down]"
DEBUG Using evn-var "TG_LOG_LEVEL=trace"
DEBUG Using evn-var "TG_NON_INTERACTIVE=true"
DEBUG Using cli-argument "working-dir=/path/to/working/dir"
v0.78.2
What's Changed
- feat: enable GCP integration tests in GH Action by @denis256 in #4257
- feat: fixed TestGcpWorksWithImpersonateBackend test by @denis256 in #4261
- feat: Adding integration tests by @yhakbar in #4198
- feat: add Windows integration tests by @denis256 in #4262
- fix: Removing HTML
font-size
by @yhakbar in #4256 - docs: Adding Run Queue Docs by @yhakbar in #4249
- build(deps): bump github.com/gruntwork-io/boilerplate to v0.6.1 by @denis256 in #4263
- build(deps): bump github.com/gruntwork-io/terragrunt-engine-go to v0.0.14 by @denis256 in #4263
- build(deps): bump golang.org/x/oauth2 to v0.30.0 by @denis256 in #4263
- build(deps): bump golang.org/x/sync to v0.14.0 by @denis256 in #4263
- build(deps): bump google.golang.org/api to v0.232.0 by @denis256 in #4263
- build(deps): bump google.golang.org/grpc to v1.72.0 by @denis256 in #4263
- chore: dependencies update by @denis256 in #4263
Full Changelog: v0.78.1...v0.78.2