Skip to content

Releases: gruntwork-io/terragrunt

v0.79.3

21 May 18:20
578f48e
Compare
Choose a tag to compare

💪🏽 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.

image image

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.

image

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

New Contributors

Full Changelog: v0.79.2...v0.79.3

v0.79.2

21 May 13:56
958f0c9
Compare
Choose a tag to compare

🏎️ 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

  • feat: Improved performance by memoizing -version output by @denis256 in #4288

Full Changelog: v0.79.1...v0.79.2

v0.79.1

21 May 13:23
a8a3b98
Compare
Choose a tag to compare

💪🏽 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

20 May 18:18
594134b
Compare
Choose a tag to compare

💪🏽 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

13 May 21:55
a76bdc9
Compare
Choose a tag to compare

✨ 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

12 May 14:52
b19d23f
Compare
Choose a tag to compare

🐛 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

Full Changelog: v0.78.2...v0.78.3

alpha-2025051001

10 May 14:38
Compare
Choose a tag to compare
alpha-2025051001 Pre-release
Pre-release

⚠️ 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:

  1. In the specified TG working directory.
  2. In the repository root directory.
  3. In .config located in the repository root directory.
  4. In config dirs, depending on the OS, for unix OS this may be HOME or XDG_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 is log-level
  • The key for the terragrunt run --tf-forward-stdout flag is tf-forward-stdout
  • The key for the terragrunt list --format flag is list-format
  • The key for the terragrunt hcl format --exclude-dir flag is hcl-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

09 May 15:38
57b4238
Compare
Choose a tag to compare

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

v0.78.1

06 May 08:57
0e73b7f
Compare
Choose a tag to compare

What's Changed

  • docs: Updating docs now that stacks are generally available by @yhakbar in #4243
  • fix: AWS S3 backend access logging bucket not versioning by @levkohimins in #4246

Full Changelog: v0.78.0...v0.78.1

v0.78.0

02 May 16:30
19e68d4
Compare
Choose a tag to compare

🧪 Experiments Completed

The stacks experiment is now complete.

If you were previously using the flag --experiment stacks to opt in to experimental functionality, you no longer have to do so. Note that if you are, you will simply get a warning that it is no longer necessary.

🛠️ Breaking Changes

Legacy commands (as replaced by the CLI Redesign are now deprecated, and will be phased out at a future date, which will be scheduled in #3535. Make sure to subscribe to the issue if you would like to be informed when these deprecated features are no longer supported.

For instructions on migrating to the new commands provided after the CLI Redesign, read the CLI Redesign Migration Guide.

The following are now deprecated:

  • hclfmt (use hcl fmt instead)
  • hclvalidate (use hcl validate instead)
  • validate-inputs (use hcl validate --inputs and hcl validate --inputs --strict instead)
  • terragrunt-info (use info print instead)
  • output-module-groups (use find --dag --json instead)
  • render-json (use render --json -w instead)
  • graph-dependencies (use dag graph instead)
  • run-all (use run --all instead)
  • graph (use run --graph instead)
  • The default command. e.g. terragrunt workspace list (use terragrunt run -- workspace list instead)
  • Default bootstrap (automatically provisioning backend resources without additional flags). This is now opt in behavior, and requires usage of the --backend-bootstrap flag or explicitly running the new backend bootstrap command.
  • aws-provider-patch (we are simply deprecating this command, and removing it when the other commands are removed. It served its purpose as a short term stopgap tool).

Note that this will not result in an immediate breaking change for users, as we’ll have an initial deprecation window to give users time to adjust to these changes. If you’d like to ensure that you are prepared for the future removal of legacy commands, you can take advantage of the cli-redesign strict control to opt in to the future breaking change early.

💪🏽 Enhancements

The logging for stack generation has been improved to make it easier to determine at a glance the stack file that’s generating a particular unit.

stacks-generation

What's Changed

Full Changelog: v0.77.22...v0.78.0