🎉 v1.0.0 Release Candidate
This is the first release candidate for Terragrunt 1.0.
This release has been a little over a year in the making, and much of Terragrunt been stabilized to enable this release candidate. With the release of 1.0 in March, you can expect many stability guarantees from Terragrunt, which are documented here. You have roughly 6-8 weeks to influence the final 1.0 release, so make sure you try this release candidate out and share your feedback. If you are happy with this release, make sure to share your feedback with an emoji or a comment on the associated GitHub Discussion.
You can learn more about the release candidate process in The Road to 1.0: Release Schedule blog post.
🛠️ Breaking Changes
Consistent .terragrunt-cache directory generation
Terragrunt now creates a .terragrunt-cache directory for every run, regardless of whether the terragrunt.hcl file defines a terraform block with a source attribute.
This change improves consistency across all Terragrunt executions, as OpenTofu/Terraform will now always run within the .terragrunt-cache directory. This standardized behavior simplifies troubleshooting and makes the execution model more predictable.
Removal of tflint
Terragrunt has been shipping with a version of tflint compiled into the binary to allow for more convenient usage without installing tflint directly. However due to the adoption of a BUSL license in tflint, the version included in Terragrunt was frozen.
The dependency on tflint is now fully removed from Terragrunt. If you want to call tflint using a before_hook using Terragrunt, you will have to have tflint installed locally to do so.
To reduce the burden of this breaking change, Terragrunt will continue to provide conveniences like automatically running tflint init on behalf of users, although it no longer ships with a compiled version of tflint in the terragrunt binary.
To learn more, read the documentation on the integration with tflint.
Discovery commands discover hidden configurations by default
The find and list commands now discover units/stacks in hidden directories by default (this previously required usage of the --hidden flag), notably this now discovers .terragrunt-stack directories by default. The commands also now support an opt-in --no-hidden flag to avoid discovery in hidden directories.
The --hidden flag has been deprecated, and will not be removed in 1.0. Using the flag no longer does anything.
✨ New Features
Tips added
Terragrunt will now provide helpful tips when it detects usage patterns that might benefit from some additional guidance.
You can disable the display of tips at any time using --no-tips or disable individual tips with --no-tip, (e.g. --no-tip=debugging-docs).
🐛 Bug Fixes
Improved filter parsing errors
Parsing errors returned when invalid filter queries are used with --filter have been improved to provide more detailed error messages and actionable recommendations.
Before:
After:
📖 Documentation Updates
1.0 Guarantees
A living document named Terragrunt 1.0 Guarantees has been added to the Terragrunt website clarifying what is and isn’t considered a breaking change for the duration of 1.0.
Over time, as ambiguity in edge-cases for what is considered a breaking change are addressed, the page will be updated so that you can be confident your workflows won’t be impaired.
llms.txt added
An /llms.txt route has been added to the Terragrunt website to make it easier for LLMs to consume Terragrunt documentation in Markdown format.
🧪 Experiments Updated
Engines now use GitHub environment variables for downloads
When downloading engines using the engine experiment, Terragrunt will detect and leverage the GH_TOKEN and GITHUB_TOKEN environment variables if present to authenticate with the GitHub API while performing release discovery and download of engines.
What's Changed
- feat: .terragrunt-cache directory creation by @denis256 in #5402
- feat: Adding tip system by @yhakbar in #5434
- feat: Adding
-no-hiddenflag to discovery commands and deprecating-hiddenby @yhakbar in #5450 - feat: Use GitHub auth for engine release checks / downloads by @ThisGuyCodes in #5447
- fix: Improving filter parsing errors by @yhakbar in #5413
- fix: IaC tool CLI arguments re-ordering by @denis256 in #5414
- fix: Addressing bucket verification flake by @yhakbar in #5419
- fix: Fixing
TestTerragruntDestroyOrderflake by @yhakbar in #5427 - fix: Adding lock files to cache key for provider cache by @yhakbar in #5430
- fix: Fixing
TestSopsDecryptOnMissingtest by @yhakbar in #5428 - fix: Fixing
TestTerragruntStackCommandsWithSymlinkstest by @yhakbar in #5426 - fix: fixing
TestTerragruntDestroyOrderWithQueueIgnoreErrorsflake by @ThisGuyCodes in #5436 - fix: Fixing usage of
%win logs by @yhakbar in #5441 - fix: Updating
-auth-provider-cmdschema in flags docs by @yhakbar in #5435 - fix: Fixing
TestAwsBootstrapBackendWithAccessLoggingFlakeby @yhakbar in #5442 - fix: Fixing null input passing by @yhakbar in #5455
- fix: Fixing flake in
TestDeprecatedDefaultCommand_TerraformSubcommandCliArgsby @yhakbar in #5456 - fix: Addressing review feedback on #5455 by @yhakbar in #5459
- fix: Use
helpers.CopyEnvironmentwherever there's a test with side-effects by @yhakbar in #5460 - fix: Fixing
TestAwsS3SSECustomKeyby @yhakbar in #5457 - docs: Memoizing latest release call by @yhakbar in #5424
- docs: Adding 1.0 guarantees by @yhakbar in #5425
- docs: Adding community invite link redirect by @yhakbar in #5432
- docs: Adding timeout and avoiding null caching in GitHub API memoization in docs by @yhakbar in #5429
- docs: Update terminology to use the new root.hcl pattern by @hashlash in #5135
- docs: Change move command to copy and corrected supporting text in quick st… by @therealgglggl in #5332
- docs: Add output_dir to inputs in multiple sections by @therealgglggl in #5334
- docs: add instructions on bypassing tflint integration behavior by @ThisGuyCodes in #5437
- docs: Update provider cache documentation to include a valid command by @CodyRay in #5276
- docs: tweak opening wording of
stacks generateby @ThisGuyCodes in #5443 - docs: remove lint meta comment that's getting displayed on the site by @ThisGuyCodes in #5470
- docs: Adding
llms.txtby @yhakbar in #5449 - docs: Adding
--tipand--no-tipsdocs by @yhakbar in #5468 - chore: Adding fuzz tests for
filterby @yhakbar in #5420 - chore: IAC tool cli building improvements by @denis256 in #5448
- chore: Remove tflint by @ThisGuyCodes in #5433
- chore: Using slim runners where possible by @yhakbar in #5461
- chore: removal of unused AssumeAlreadyApplied field by @denis256 in #5417
- chore: removed unused public functions and constants by @denis256 in #5472
- chore: iac cli package by @denis256 in #5462
New Contributors
- @hashlash made their first contribution in #5135
- @therealgglggl made their first contribution in #5332
- @CodyRay made their first contribution in #5276
Full Changelog: v0.99.0...v1.0.0-rc1