Terraform Module Releaser
Version updated for https://github.com/techpivot/terraform-module-releaser to version v2.2.0.
This publisher is shown as ‘verified’ by GitHub.
This action is used across all versions by 33 repositories.
Action Type
This is a Node action using Node version 24.
Go to the GitHub Marketplace to find the latest changes.
Action Summary
This GitHub Action automates the management of Terraform modules within a monorepo, providing features like efficient module tagging, smart versioning, comprehensive wiki generation, release automation, and self-maintenance. It simplifies the process of maintaining Terraform modules by automating tasks such as generating Git tags, creating releases, and updating documentation. The action works seamlessly with GitHub.com and GHES environments, ensuring a smooth transition between cloud and on-premises deployments.
What’s Changed
✨ New Features
Self-Healing, Idempotent Releases 🔁: Re-running a merged workflow now converges to the correct state instead of guessing. Previously the entire merge handler was gated on a single hidden marker in a pull request comment, which meant a deleted release could never be restored and a run that died between pushing a tag and creating its release was unrecoverable. Release state now lives in the release itself. @virgofx (#503)
- A re-run never over-bumps a version or publishes a duplicate release.
- A release you delete by hand is recreated at its original version, not a new one.
- A run interrupted between the tag push and the release creation is repaired on re-run.
- A tag that cannot be proven to belong to the current pull request is never claimed; it is left for its owning pull request to heal while the current one releases above it.
changed-modules-mapgains anactionfield (created,recovered,skipped, ornone) so downstream jobs can tell a fresh release apart from a no-op.
Quieter Pull Requests With No Changes 🔇: New
hide-no-changes-pr-commentinput. When enabled, the “Release Plan” comment is collapsed rather than posted loudly on pull requests that change no Terraform modules, have no pending tag or release cleanup, and pass the wiki check. Defaults tofalse, so existing behavior is unchanged. @leetrout (#470)
🐛 Bug Fixes
Module terraform-docs Config Honored 📄: Module-scoped
.terraform-docs.ymlfiles are now discovered and merged with the action’s wiki-safe defaults instead of being removed from the workspace, so your formatting and content settings survive wiki generation. @virgofx (#430)Wiki Validation Runs Before Merge ✅: Wiki checks now run as a real preflight on open pull requests, with checkout failures and terraform-docs failures reported separately and per-module errors surfaced directly in the pull request comment. Broken wiki configuration is caught while the pull request is still open rather than at merge time. @virgofx (#430)
🛠 Improvements
Accurate Release Outputs 🎯:
changed-modules-map.releaseTagnow always names a tag that actually exists. Previously it reported the optimistically computed next version even when nothing was published, so downstream jobs could resolve a ref that was never created.Fewer API Calls On Open Pull Requests ⚡: Pull request comments are no longer paginated on every event. Open pull request runs read no comments at all, and the remaining reads request 100 per page instead of the default 30, which meaningfully reduces rate-limit pressure on high-traffic monorepos.
📦 Dependencies
Consolidates 49 dependency updates (#431 through #501):
- Security and runtime:
brace-expansion5.0.5 → 5.0.9,qs6.15.0 → 6.15.2,ip-addressandexpress-rate-limit,which6 → 7,js-yaml4.2.0 → 4.3.0,conventional-commits-parser6.4.0 → 7.1.0,@actions/core,fast-uri,minimatch,p-limit. - GitHub Actions:
actions/checkout6 → 7,actions/setup-node6 → 7,actions/github-script8 → 9,github/codeql-action,super-linter/super-linter,SonarSource/sonarqube-scan-action7 → 8. - Development tooling: TypeScript, Vitest, Biome, esbuild,
@types/node25 → 26,ts-deepmerge7 → 8,hono.
📌 Upgrade Notes
This release is backward compatible. No inputs changed, nothing was removed, and the action still runs on node24. Two behaviors are worth knowing about before you upgrade:
releaseTagcan now benull. On merge runs,changed-modules-mapis re-emitted with what was actually published. When a module was skipped or nothing was released,releaseTagisnullandactionis"skipped"or"none". If you consume this output, branch onactionbefore treatingreleaseTagas a newly published tag:echo '${{ steps.release.outputs.changed-modules-map }}' \ | jq -r 'to_entries[] | select(.value.action == "created") | .value.releaseTag'Obsolete tag/release cleanup and wiki regeneration are now skipped when the checkout is stale. If the base branch advances past a pull request’s merge commit before its workflow runs, those steps are skipped with a warning rather than operating on an out-of-date view of the repository. This prevents a re-run of an older pull request from deleting tags, releases, and wiki pages for modules added since. It is self-correcting on the next merge.