Releases: techpivot/terraform-module-releaser
Release list
v2.2.1
2.2.1 (2026-09-09)
🐛 Bug Fixes
- fix: discard git stdout during release to avoid ENOBUFS @beyondbill (#520)
- fix: resolve SonarQube code smells, harden commit parsing against ReDoS, and split lint CI @virgofx (#513)
📦 Dependencies
- build(deps): bump js-yaml from 5.2.3 to 5.3.0 @dependabot[bot] (#515)
- build(deps-dev): bump the npm-development group with 3 updates @dependabot[bot] (#514)
- build(deps): bump the actions-minor group with 3 updates @dependabot[bot] (#516)
- build(deps): bump the actions-minor group across 1 directory with 3 updates @dependabot[bot] (#511)
🛠 Improvements
- ci: replace Super-Linter with actionlint and gitleaks, adopt conventional script names @virgofx (#512)
- chore(node): adopt runtime-parity Node versioning, devcontainer, and docs @virgofx (#510)
- chore: consolidate AI agent instructions into CLAUDE.md @virgofx (#509)
Full Changelog: v2.2.0...v2.2.1
v2.2.0
✨ 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.
Full Changelog: v2.1.0...v2.2.0
v2.1.0
2.1.0 (2026-04-06)
✨ New Features
- Pre-Release Option for GitHub Releases 🏷️: You can now mark Terraform-Module GitHub-specfic releases as pre-releases using a new
pre-releaseconfig input (default: false). This helps teams in monorepos avoid conflicts with other release tools and ensures more accurate release tracking. @tokio-on-jupiter @virgofx (#427)
🛠 Improvements
- Node.js Runtime Update 🚀: Updated Node.js runtime from v20 to v24 in action configuration and documentation, ensuring compatibility with the latest features and security updates. @virgofx (#424)
🔧 Developer Experience
- TypeScript 6.0.2 Upgrade 🧑💻: Upgraded TypeScript to v6.0.2, improving type safety and developer tooling across the project. @virgofx (#424)
- SonarQube Action Pinning Guidelines 📋: Updated SonarQube scan action to v7.0.0 and added best practices for pinning third-party actions, enhancing CI reliability and security. @virgofx (#387)
Full Changelog: v2.0.0...v2.1.0
v2.0.0
2.0.0 (2026-02-17)
🚨 Breaking Changes
- Conventional Commits Default Parser
⚠️ : Semantic versioning now defaults to conventional commit parsing instead of keyword-based parsing. If you relied on the previous default, please review your configuration. This change improves release accuracy and clarity. @virgofx (#378)
semver-modeControls how semantic version bumps are determined from commit messages. Valid options: "conventional-commits" (default) or "keywords". "conventional-commits" (default): Parses commit messages using the Conventional Commits specification (https://www.conventionalcommits.org/). Version bumps are determined by commit type and breaking change indicators: - MAJOR: "BREAKING CHANGE" footer or "!" after type/scope (e.g., "feat!: drop Node 16") - MINOR: "feat" type (e.g., "feat: add new endpoint") - PATCH: "fix" type (e.g., "fix: resolve null pointer") - Any other valid conventional commit type defaults to PATCH The default-semver-level input is still respected as the fallback when a commit does not conform to the Conventional Commits format (i.e., has no recognized type prefix). "keywords": Uses major-keywords, minor-keywords, and patch-keywords for simple substring matching against commit messages. This is the legacy behavior from versions prior to v1.8.1. When using this mode, the keyword-based inputs control version bumps.
✨ New Features
- Semantic Versioning Modes 🏷️: Added support for multiple semantic versioning modes and conventional commit presets, giving you more control over release automation and version bumping. @virgofx (#378)
- Optional Tag Signing 🔏: Major tag creation now supports optional signing and fallback mechanisms, enhancing release security and reliability. @virgofx (#381)
- AI Agent Workflow Support 🤖: Introduced comprehensive documentation and workflows for AI agents, including implementation planners, test specialists, and PR writer agents, to streamline development and testing. @virgofx (#375)
🐛 Bug Fixes
- Formatting and Spelling Corrections ✍️: Fixed minor spelling and formatting issues across documentation and code comments for better clarity. @virgofx (#375)
- Output Redirection in Tag Script 🛠️: Corrected output redirection and removed unnecessary newlines in update-major-tag.sh, improving script reliability. @virgofx (#346)
🛠 Improvements
- Terraform-docs v0.21.0 📄: Updated terraform-docs version across configuration and documentation for enhanced compatibility and output. @virgofx (#380)
- Node.js 25 Upgrade 🚀: Upgraded Node.js to version 25 and updated related documentation, ensuring access to the latest features and performance improvements. @virgofx (#376)
- Major Version Tag Script 🏷️: Added and enhanced script for updating major version tags in GitHub Actions, simplifying release management. @virgofx (#346)
- .editorconfig for Consistency 📝: Introduced .editorconfig to enforce consistent coding styles across the project. @virgofx (#346)
📚 Documentation
- Comprehensive Guides and Architecture Docs 📚: Expanded documentation with detailed guides on architecture, development, testing, and agent workflows, making onboarding and contribution easier than ever. @virgofx (#375)
- README Badge and Sponsors Link 💎: Updated README with improved badge styles and added a GitHub Sponsors link to highlight community support. @virgofx (#383)
- Semantic Versioning Options in README 🏷️: Clarified semantic versioning configuration options in README for easier setup. @virgofx (#346)
- Node.js Upgrade Documentation 🛠️: Updated documentation to reflect Node.js 25 upgrade. @virgofx (#376)
🔧 Developer Experience
- Octokit Networking Fix 🌐: Enabled peer mode on Octokit client to resolve intermittent networking issues in devcontainer and CI environments, ensuring smoother authentication and connectivity. @virgofx (#347)
- Test and TypeScript Guidelines 🧪: Added comprehensive guidelines for testing and TypeScript source structure, supporting best practices and maintainability. @virgofx (#375)
This release delivers powerful new automation capabilities, improved reliability, and a smoother developer experience. Dive into the enhanced documentation and enjoy streamlined workflows for your next release!
Full Changelog: v1.8.1...v2.0.0
v1.8.1
1.8.1 (2025-12-16)
✨ New Features
- Configurable Default Semver Level 🛠️: You can now set your preferred default semantic version bump (patch, minor, or major) for commits that don't include release keywords. This gives you more control over automated releases and ensures your versioning matches your workflow. @Copilot @virgofx (#344)
Full Changelog: v1.8.0...v1.8.1
v1.8.0
1.8.0 (2025-12-15)
✨ New Features
- Flexible Module Reference Mode 🏷️: Choose how Terraform module versions are referenced in generated documentation—by tag or commit SHA—using the new
module-ref-modeconfiguration. This gives you precise control over version tracking and auditability in your wiki documentation. @Copilot (#283) - Smarter Changelog Generation 📝: Changelog generation is now token-aware and more efficient, with intelligent commit message truncation (especially for dependabot updates) and real-time token usage estimation. This keeps release notes concise while staying within API limits. @virgofx (#342)
🛠 Improvements
- Upgraded Testing Infrastructure 🧪: Upgraded from Vitest 3 to Vitest 4 with enhanced test coverage tooling. Includes comprehensive new test cases covering edge scenarios in wiki repository handling, changelog generation for modules without releases, and configuration clearing. Maintains 100% code coverage across all metrics (statements, branches, functions, lines). @virgofx (#341)
- Node.js 24 Development Environment 🚀: Development environment upgraded to Node.js 24 for improved performance and compatibility with the latest features. All configuration files, documentation, and workflows updated for seamless setup. @virgofx (#340)
- Biome Schema Reference Update 🧩: Biome schema now references your local installation instead of a remote URL, preventing version mismatches and ensuring consistent linting and formatting across all contributors. @virgofx (#339)
📦 Dependencies
- Production Dependencies: Updated
@modelcontextprotocol/sdk,express,glob,p-limit,@actions/core,@octokit/plugin-paginate-rest,@octokit/plugin-rest-endpoint-methods,@octokit/request-error, and Vite security patches (#304, #312, #320, #330, #331, #341) - Development Dependencies: Updated
openai(5.23.1 → 6.10.0),@octokit/types,minimatch,textlint,which, and npm-development group packages (#279, #286, #294, #298, #303, #323, #325, #326, #341) - GitHub Actions: Updated
actions/checkout(5 → 6),actions/setup-node(4 → 6),actions/github-script(7 → 8),actions/upload-artifact(4 → 5),github/codeql-action(3 → 4),peter-evans/create-pull-request,SonarSource/sonarqube-scan-action(5.2.0 → 6.0.0), andsuper-linter/super-linterupdates (#276, #277, #278, #284, #293, #296, #297, #302, #321, #322, #324)
📚 Documentation
- Comprehensive Contributor Guide 🤝: New CONTRIBUTING.md provides detailed guidance on environment setup, devcontainer usage, GITHUB_TOKEN configuration, workflow practices, commit conventions (Conventional Commits), and community standards—making it easier than ever to contribute. @Copilot (#249)
- Clearer Copilot Instructions 📖: Copilot instructions restructured for better clarity and organization, with improved guidance on Node.js compatibility, code standards, and development best practices. @virgofx (#338)
Full Changelog: v1.7.1...v1.8.0
v1.7.1
1.7.1 (2025-09-24)
✨ New Features
- GitHub Copilot Instructions Added 🤖: Get started faster with comprehensive Copilot setup and usage guidance for Terraform Module Releaser, including streamlined workflows and improved readability. @Copilot (#251)
🐛 Bug Fixes
- Accurate Module Release Info 📝: GitHub outputs for module release details now display correctly for closed events. @virgofx (#273)
- Correct Wiki Usage Link 🔗: The usage template in the wiki now points to the correct
action.ymllocation. @virgofx (#248)
🛠 Improvements
- Release Version Format Validation ✅: Release versions are now validated to match the X.Y.Z pattern, helping prevent accidental mislabeling. @dependabot[bot] (#268)
- Credential Persistence Disabled in CI 🔒: Credentials are no longer persisted during checkout actions in CI workflows, improving security for all users. @dependabot[bot] (#268)
Full Changelog: v1.7.0...v1.7.1
v1.7.0
1.7.0 (2025-08-21)
✨ New Features
- Custom Wiki Usage Block & Enhanced Generation 📝📚: You can now define a custom usage template for your module's wiki documentation with the new
wiki-usage-templateinput, while the underlying wiki generation has been refactored to use a template-based system for improved flexibility and maintainability. @polleuretan (#235) - Dependency-Aware Module Releases 🔗: The system now parses Terraform module dependencies and intelligently determines which modules need to be released based on changes, streamlining complex multi-module workflows. @virgofx (#220)
🛠 Improvements
- Enhanced Tag Generation Options 🏷️: Expanded configuration for tag generation, allowing detailed customization of directory separators and version prefix usage, with improved validation and error messages. @virgofx (#227)
- Better Output and Logging Consistency 📤: Standardized output keys and improved logging for easier debugging and integration. @virgofx (#220)
🐛 Bug Fixes
- Bearer Authentication for API Calls 🔐: Switched to bearer authentication for improved API compatibility and security. @frco9 (#240)
- GitHub Actions Bot User ID Handling 🤖: Improved compatibility with GitHub Enterprise Server by dynamically detecting the Actions bot user ID, preventing issues in environments with custom bot IDs. @virgofx (#222)
- GITHUB_TOKEN Reference in CI 🧪: Updated the way
GITHUB_TOKENis referenced during testing, ensuring smoother CI runs and more reliable pre-release checks. @virgofx (#246)
🔧 Developer Experience
- Centralized Action Metadata System 🗂️: All GitHub Action inputs are now managed via a centralized metadata system, simplifying configuration and validation for contributors. @virgofx (#227)
- Comprehensive Test Coverage 🧪: Significantly expanded and improved test suites for configuration, module parsing, and release logic, increasing reliability and confidence in changes. @virgofx (#220, #227)
This release brings major improvements to configuration flexibility, documentation customization, and dependency-aware automation—making it easier than ever to manage complex Terraform module workflows. Thank you to all contributors for your enhancements and fixes!
Full Changelog: v1.6.0...v1.7.0
v1.6.0
1.6.0 (2025-06-01)
✨ New Features
- GitHub Enterprise Server Compatibility 🏢: You can now use the module releaser seamlessly with GitHub Enterprise Server (GHES). The release adds support for custom API endpoints, improved handling of GHES-specific configurations, and ensures all workflows—including changelog generation and automated tag cleanup—work reliably in GHES environments. @virgofx (#208)
- Enhanced Changelog Generation 📝: Changelogs now leverage the GitHub Models API for richer, more informative release notes, and changelog sections are automatically added to PR comments—even on GHES. @virgofx (#208)
🛠 Improvements
- Updated terraform-docs Support 📦: Upgraded terraform-docs integration to v0.20.0, ensuring compatibility with the latest features and improved documentation generation for your modules. @virgofx (#208)
- Utility Function Enhancements 🧰: Improved internal utility functions for more robust and maintainable workflows, especially around directory management and module source formatting. @virgofx (#208)
- Branding Clarity on Mobile 📱: Made small tweaks to enhance branding visibility and clarity when viewed on mobile devices. @virgofx (#208)
📚 Documentation
- Comprehensive GHES Setup Guide 📖: Added detailed documentation on configuring and using the module releaser with GitHub Enterprise Server, making it easier to get started in enterprise environments. @virgofx (#208)
- Module Exclusion Pattern Details 🔍: Expanded the README with clear examples and explanations for pattern matching when excluding modules, helping you fine-tune your release process. @virgofx (#205)
- Streamlined Directory Exclusion Notes 🗂️: Removed redundant information from the README for a cleaner, more focused documentation experience. @virgofx (#206)
🔧 Developer Experience
- Default YAML Formatter in DevContainer ⚙️: Added a default YAML formatter to VSCode settings, making it easier for contributors to maintain consistent formatting. @virgofx (#205)
This release is all about empowering teams working in enterprise environments and making your release process smoother—whether you're on GitHub.com or GHES. Enjoy the new capabilities and improved documentation!
Full Changelog: v1.5.0...v1.6.0
v1.5.0
1.5.0 (2025-03-10)
New Features ✨
- Module Path Ignore Functionality 🗂️: Introducing the ability to ignore specific module paths, along with comprehensive tests to ensure reliability. This enhancement allows for greater flexibility in managing your modules. @virgofx (#178)
- Added KMS module with nested directories.
- Updated dependencies to the latest versions.