Releases: PSModule/Process-PSModule
v5.4.7
🩹 [Patch]: Framework-generated code coverage no longer penalizes module authors (#310)
Framework-generated boilerplate — type accelerator registration and OnRemove cleanup — is now tested and covered by updated action versions referenced in this workflow. The obsolete $IsWindows PS 5.1 shim is no longer injected into built modules. Coverage from the framework test step and the module test step is already aggregated by Get-CodeCoverage, so module authors' coverage percentages now reflect only the code they wrote.
- Fixes #309
Changed: Build-PSModule updated to v4.0.14
Built modules no longer include the $IsWindows = $true Desktop edition shim or its PSScriptAnalyzer suppression attributes. PSModule targets PowerShell LTS (7.6+), where $IsWindows is a built-in automatic variable.
See PSModule/Build-PSModule#132 for details.
Changed: Test-PSModule updated to v3.0.10
The framework module tests now validate that every public class and enum is registered as a type accelerator after import, and that the OnRemove hook cleans them up when the module is removed. These tests produce coverage artifacts that are aggregated with module author test coverage, so framework-generated boilerplate no longer counts against the module author's coverage target.
See PSModule/Test-PSModule#113 for details.
Changed: README documents the framework testing design
The README now explains:
- Why framework-generated code is tested by the framework itself
- How coverage from both the framework test step and the module test step is aggregated
- That module authors do not need to test framework-generated code themselves
Technical Details
.github/workflows/Build-Module.yml: Updated Build-PSModule from v4.0.13 to v4.0.14 (345728124d201f371a8b0f1aacb98f89000a06dc).github/workflows/Test-Module.yml: Updated Test-PSModule from v3.0.8 to v3.0.10 (8c3337136dc7cf320da39eeb50e776d04bc9ac73).github/workflows/Test-SourceCode.yml: Updated Test-PSModule from v3.0.8 to v3.0.10README.md: Added "Code coverage for framework-generated code" paragraph under the Framework test section; added coverage aggregation details under the Get code coverage section; removed reference to the$IsWindowsshim- No workflow structure changes — code coverage was already enabled in Test-Module.yml and Get-PesterCodeCoverage already aggregates all
*-CodeCoverageartifacts
v5.4.6
🪲 [Fix]: Super-linter can now post PR comment summaries (#308)
Super-linter's inline PR comment summaries now appear when lint errors are found. Previously, the linter detected issues but silently failed to post the summary comment, requiring developers to navigate to the Actions log to see what went wrong.
- Fixes #307
Fixed: Lint error summaries now visible directly on PRs
When super-linter detects markdown, YAML, or other linting issues, it posts a summary comment on the pull request for quick feedback. This was failing with a 403 error because the Lint-Repository.yml reusable workflow's permissions: block only granted contents: read and statuses: write, omitting the pull-requests: write permission needed by the GitHub Issues API to create comments.
The error looked like this in the Actions log:
[WARN] Failed to call GitHub API: curl: (22) The requested URL returned error: 403
[WARN] Failed to create GitHub issue comment
[WARN] Error while posting pull request summary
Lint failures are still correctly reported — only the inline PR comment was missing.
Technical Details
- Added
pull-requests: writeto thepermissions:block in.github/workflows/Lint-Repository.yml. - When a reusable workflow defines its own
permissions:block, it overrides (not inherits) the calling workflow's permissions. The parent workflows (workflow.ymland consumer repos) already grantpull-requests: write, butLint-Repository.ymlwas restricting theGITHUB_TOKENto a narrower scope. - No other workflows or jobs are affected — the permission is scoped to the lint job only.
v5.4.5
🩹 [Patch]: Setup/teardown jobs no longer waste runner time when scripts are absent (#300)
The BeforeAll-ModuleLocal and AfterAll-ModuleLocal workflow jobs no longer allocate runners when the corresponding tests/BeforeAll.ps1 or tests/AfterAll.ps1 scripts do not exist in the repository. Repositories without setup/teardown scripts now skip these jobs entirely, saving runner time on every workflow run.
- Fixes #288
Changed: Runner allocation for setup/teardown jobs
With the Get-PSModuleSettings v1.4.4 update, repositories without tests/BeforeAll.ps1 or tests/AfterAll.ps1 no longer allocate runners for the BeforeAll-ModuleLocal and AfterAll-ModuleLocal jobs. These jobs are now skipped entirely at the settings evaluation stage, before any runner is provisioned.
Previously, both jobs always spun up a runner — even when there was nothing to execute. The runner would check out the repo, invoke the GitHub-Script action, find no script, and exit gracefully. This wasted runner time on every workflow run for the majority of repositories.
Additionally, AfterAllModuleLocal was previously set to $true unconditionally. It now uses the same base conditions as BeforeAllModuleLocal combined with the script existence check. The workflow-level always() condition remains as an additional safeguard for cleanup-after-failure scenarios.
Technical Details
- Bumps
PSModule/Get-PSModuleSettingsfromv1.4.3(3d53e12) tov1.4.4(21c88f4) inGet-Settings.yml. - The action change (PSModule/Get-PSModuleSettings#18) adds
Test-Pathchecks for the setup/teardown scripts and sets theRun.BeforeAllModuleLocal/Run.AfterAllModuleLocalflags accordingly, which the existing workflowif:conditions already respect. - No structural changes to any reusable workflow files — only a SHA pin update.
v5.4.4
🩹 [Patch]: Workflow dependencies updated to latest versions (#298)
Reusable workflows now reference the latest versions of all action dependencies, picking up upstream bug fixes and improvements.
Changed: Dependency versions in workflows
The following dependencies have been bumped across all workflow files:
| Dependency | Previous | New |
|---|---|---|
actions/download-artifact |
v7.0.0 | v8.0.0 |
actions/upload-artifact |
v6.0.0 | v7.0.0 |
PSModule/Build-PSModule |
v4.0.12 | v4.0.13 |
PSModule/Invoke-Pester |
v4.2.3 | v4.2.4 |
PSModule/Publish-PSModule |
v2.2.2 | v2.2.3 |
Affected workflows:
Build-Docs.ymlBuild-Module.ymlBuild-Site.ymlPublish-Module.ymlTest-Module.ymlTest-ModuleLocal.yml
Technical Details
All references use pinned commit SHAs with version comments. No workflow logic or input/output changes — only the pinned SHAs and version comments were updated.
v5.4.3
Bump super-linter/super-linter from 8.3.2 to 8.5.0 (#284)
Bumps super-linter/super-linter from 8.3.2 to 8.5.0.
Release notes
Sourced from super-linter/super-linter's releases.
v8.5.0
8.5.0 (2026-02-06)
🚀 Features
🐛 Bugfixes
- fix disable-telemetry trivy config file (#7473) (2ab2bd0)
- mention summary comment in validation error (#7497) (888d5a8), closes #7483
- pass file to check as first bash-exec param (#7471) (a18e2f6), closes #7467
⬆️ Dependency updates
- bundler: bump rubocop in /dependencies in the rubocop group (#7480) (c0b4a56)
- docker: bump the docker group across 1 directory with 3 updates (#7474) (b8cb189)
- docker: bump the docker group across 1 directory with 3 updates (#7490) (147e829)
- docker: bump the docker group with 2 updates (#7463) (adc2836)
- docker: bump the docker group with 3 updates (#7455) (a1b44ab)
- java: bump com.google.googlejavaformat:google-java-format (#7489) (8758d94)
- java: bump com.puppycrawl.tools:checkstyle (#7475) (929cd66)
- java: bump com.puppycrawl.tools:checkstyle (#7498) (c285101)
- npm: bump
@isaacs/brace-expansionin /dependencies (#7482) (c15b8ac)- npm: bump
@modelcontextprotocol/sdkin /dependencies (#7488) (675cbf6)- npm: bump fast-xml-parser and
@aws-sdk/xml-builder(#7491) (7012368)- npm: bump the npm group across 1 directory with 2 updates (#7457) (962a22b)
- npm: bump the npm group across 1 directory with 2 updates (#7501) (ae44688)
- npm: bump the npm group across 1 directory with 5 updates (#7487) (9be025d)
- npm: bump the npm group across 1 directory with 6 updates (#7477) (b44fb3f)
- python: bump ruff (#7486) (7e9df59)
- python: bump snakemake (#7456) (5989994)
- python: bump the pip group across 1 directory with 2 updates (#7476) (6b3b830)
- python: bump the pip group across 1 directory with 2 updates (#7500) (4452db3)
🧰 Maintenance
- dev-docker: bump node in /dev-dependencies (#7484) (40bc6a0)
- github-actions: bump docker/login-action in the dev-ci-tools group (#7454) (a2a7292)
- update tar (#7462) (c082d16)
v8.4.0
8.4.0 (2026-01-28)
🚀 Features
... (truncated)
Changelog
Sourced from super-linter/super-linter's changelog.
Changelog
8.5.0 (2026-02-06)
🚀 Features
🐛 Bugfixes
- fix disable-telemetry trivy config file (#7473) (2ab2bd0)
- mention summary comment in validation error (#7497) (888d5a8), closes #7483
- pass file to check as first bash-exec param (#7471) (a18e2f6), closes #7467
⬆️ Dependency updates
- bundler: bump rubocop in /dependencies in the rubocop group (
v5.4.2
🩹 [Patch]: Update workflow action versions and rename release action (#275)
This release updates all workflow action dependencies to their latest versions and completes the migration from Auto-Release to Release-GHRepository.
Summary
- Updated workflow action dependencies to latest versions for improved stability and features
- Migrated release action from deprecated
PSModule/Auto-ReleasetoPSModule/Release-GHRepository - Added workflow permission for PR label management
- Cleaned up deprecated configuration files
- Important file change detection now determines whether a release should be created
What's Changed for Module Developers
Updated Workflow Dependencies
All reusable workflow files have been updated to use the latest action versions. This ensures your module CI/CD pipeline benefits from recent bug fixes and improvements across the PSModule action ecosystem.
| Action | Previous | New |
|---|---|---|
actions/checkout |
v6.0.1 | v6.0.2 |
PSModule/GitHub-Script |
v1.7.8 | v1.7.10 |
PSModule/Build-PSModule |
v4.0.9 | v4.0.12 |
PSModule/Document-PSModule |
v1.0.14 | v1.0.16 |
PSModule/Get-PSModuleSettings |
v1.4.0 | v1.4.3 |
PSModule/Get-PesterCodeCoverage |
v1.0.3 | v1.0.4 |
PSModule/Get-PesterTestResults |
v1.0.7 | v1.0.8 |
PSModule/Install-PSModuleHelpers |
v1.0.6 | v1.0.7 |
PSModule/Invoke-ScriptAnalyzer |
v4.1.1 | v4.1.2 |
PSModule/Invoke-Pester |
v4.2.2 | v4.2.3 |
PSModule/Publish-PSModule |
v2.2.0 | v2.2.2 |
PSModule/Test-PSModule |
v3.0.7 | v3.0.8 |
Release Action Migration
The deprecated PSModule/Auto-Release action has been replaced with PSModule/Release-GHRepository@v2.0.2. This is a direct replacement that provides the same release functionality with improved maintainability.
No action required by module developers - the reusable workflow handles this internally.
Important File Change Detection
The Get-PSModuleSettings action now automatically detects whether a PR contains changes to "important" files that warrant a new release. This addresses the long-standing request (#85) to only publish when meaningful changes occur.
Files that trigger releases:
| Path | Description |
|---|---|
src/** |
Module source code |
README.md |
Module documentation |
Files that do NOT trigger releases:
.github/workflows/*(workflow configurations).github/linters/*(linter configs)tests/**(test files)examples/**(example scripts).gitignore,.editorconfig, etc.
When no important files are changed:
- A comment is automatically added to the PR explaining why
ReleaseTypeis set toNone- Build, test, and publish stages are skipped
- The PR can still be merged for non-release changes
Label-Based Release Control
Module developers can also explicitly control releases via labels:
| Change Type | Label | Release Behavior |
|---|---|---|
| Breaking changes | Major |
Creates major version release |
| New features | Minor |
Creates minor version release |
| Bug fixes | Patch |
Creates patch version release |
| Documentation only | NoRelease |
No release created |
| CI/CD maintenance | NoRelease |
No release created |
Workflow Permissions Update
The Get-Settings workflow now requests pull-requests: write permission. This enables:
- Automatic label management on PRs
- Adding comments when no important files changed
No action required by module developers - repos using this workflow already grant the necessary permissions via the main workflow file.
Configuration Cleanup
Removed unused configuration files from the repository:
.github/linters/.jscpd.json- JSCPD linter config (not used in current linting setup).github/release.yml- GitHub auto-generated release notes config (release notes are now fully managed by the Release-GHRepository action)
Upgrade Impact
| Impact | Description |
|---|---|
| Breaking Changes | None - all changes are backward compatible |
| Required Actions | None - updates are automatically applied when using the reusable workflow |
| Behavior Change | PRs without important file changes will no longer trigger releases |
Related
- Part of ongoing workflow modernization efforts
- Foundation for future smart release detection enhancements (tracked in #184)
v5.4.1
🩹 [Patch]: Update Document-PSModule action to v1.0.14 (#267)
Updates the PSModule/Document-PSModule action to version 1.0.14, which includes compatibility fixes for Node.js 24 runtime and incorporates the latest dependency updates. This ensures the documentation generation step runs on the latest supported runtime.
Updated Action
| Action | Old Version | New Version |
|---|---|---|
PSModule/Document-PSModule |
v1.0.12 | v1.0.14 |
Notable Changes
Node.js 24 Compatibility
- The updated action uses
actions/upload-artifact@v6.0.0internally, which requires Node.js 24
No Breaking Changes
This is a routine patch update with no user-facing changes required.
v5.4.0
🚀 [Feature]: Add PR Title and Description as Configurable Release Notes (#264)
Your pull request title and description are now automatically used as release notes when publishing modules. By default, merging a PR creates a GitHub release with your PR title as a heading and your PR description as the release notes content. Additionally, when a PR is closed without merging, the workflow now automatically cleans up any prerelease versions and tags, preventing orphaned prereleases in the PowerShell Gallery.
PR-based release notes are now the default
Release notes are now automatically generated from your pull request content. When you merge a PR, the workflow creates a GitHub release with:
- Your PR title as an H1 heading with a link to the PR (e.g.,
# Add retry logic (#123)) - Your PR description as the release notes body
No configuration needed—just write meaningful PR descriptions and they become your release notes.
Customizing release notes behavior
Three settings in PSModule.yml control this behavior:
| Setting | Default | Description |
|---|---|---|
Publish.Module.UsePRTitleAsReleaseName |
false |
Use the PR title as the GitHub release name instead of version string |
Publish.Module.UsePRBodyAsReleaseNotes |
true |
Use the PR description as the release notes content |
Publish.Module.UsePRTitleAsNotesHeading |
true |
Prepend PR title as H1 heading with PR number link in release notes |
To disable PR-based release notes and use GitHub's auto-generated notes instead:
Publish:
Module:
UsePRBodyAsReleaseNotes: false
UsePRTitleAsNotesHeading: falseAbandoned PR cleanup
When a PR is closed without merging (abandoned), the workflow now:
- Skips all test and build jobs entirely
- Proceeds directly to cleanup
- Removes any prerelease versions and tags created for that PR
This saves CI resources and ensures abandoned work doesn't leave orphaned prereleases. Controlled by Publish.Module.AutoCleanup (enabled by default).
Action version pinning
All GitHub Actions references now use commit SHAs with version comments for improved security and reproducibility:
actions/configure-pages@983d7736d9b0ae728b81ab479565c72886d7745b # v5.0.0actions/deploy-pages@d6db90164ac5ed86f2b6aed7e0febac5b3c0c03e # v4.0.5PSModule/GitHub-Script@2010983167dc7a41bcd84cb88e698ec18eccb7ca # v1.7.8PSModule/Publish-PSModule@e1b338d1266dee28c6d6218756979597c8a77b7a # v2.2.0PSModule/Get-PSModuleSettings@28c1805d689dc5bfcfba7489e76c34a6d33d7da8 # v1.4.0
v5.3.20
v5.3.19
🩹 [Patch]: Update Get-PSModuleSettings action to version 1.0.3 (#261)
This pull request updates the Get-PSModuleSettings GitHub Action to a newer version in the workflow configuration file. This ensures the workflow uses the latest improvements and bug fixes from the action's upstream repository.
- Fixes #260
Workflow update:
- Updated the
Get-PSModuleSettingsaction in.github/workflows/Get-Settings.ymlfrom versionv1.0.2tov1.0.3to incorporate the latest changes and fixes.