Releases: PSModule/Process-PSModule
v4.0.9
Bump actions/checkout from 4 to 5 (#182)
Bumps actions/checkout from 4 to 5.
Release notes
Sourced from actions/checkout's releases.
v5.0.0
What's Changed
- Update actions checkout to use node 24 by
@salmanmkc
in actions/checkout#2226- Prepare v5.0.0 release by
@salmanmkc
in actions/checkout#2238
⚠️ Minimum Compatible Runner Versionv2.327.1
Release NotesMake sure your runner is updated to this version or newer to use this release.
Full Changelog: actions/checkout@v4...v5.0.0
v4.3.0
What's Changed
- docs: update README.md by
@motss
in actions/checkout#1971- Add internal repos for checking out multiple repositories by
@mouismail
in actions/checkout#1977- Documentation update - add recommended permissions to Readme by
@benwells
in actions/checkout#2043- Adjust positioning of user email note and permissions heading by
@joshmgross
in actions/checkout#2044- Update README.md by
@nebuk89
in actions/checkout#2194- Update CODEOWNERS for actions by
@TingluoHuang
in actions/checkout#2224- Update package dependencies by
@salmanmkc
in actions/checkout#2236- Prepare release v4.3.0 by
@salmanmkc
in actions/checkout#2237New Contributors
@motss
made their first contribution in actions/checkout#1971@mouismail
made their first contribution in actions/checkout#1977@benwells
made their first contribution in actions/checkout#2043@nebuk89
made their first contribution in actions/checkout#2194@salmanmkc
made their first contribution in actions/checkout#2236Full Changelog: actions/checkout@v4...v4.3.0
v4.2.2
What's Changed
url-helper.ts
now leverages well-known environment variables by@jww3
in actions/checkout#1941- Expand unit test coverage for
isGhes
by@jww3
in actions/checkout#1946Full Changelog: actions/checkout@v4.2.1...v4.2.2
v4.2.1
What's Changed
- Check out other refs/* by commit if provided, fall back to ref by
@orhantoy
in actions/checkout#1924New Contributors
@Jcambass
made their first contribution in actions/checkout#1919Full Changelog: actions/checkout@v4.2.0...v4.2.1
... (truncated)
Changelog
Sourced from actions/checkout's changelog.
Changelog
V5.0.0
- Update actions checkout to use node 24 by
@salmanmkc
in actions/checkout#2226V4.3.0
- docs: update README.md by
@motss
in actions/checkout#1971- Add internal repos for checking out multiple repositories by
@mouismail
in actions/checkout#1977- Documentation update - add recommended permissions to Readme by
@benwells
in actions/checkout#2043- Adjust positioning of user email note and permissions heading by
@joshmgross
in actions/checkout#2044- Update README.md by
@nebuk89
in actions/checkout#2194- Update CODEOWNERS for actions by
@TingluoHuang
in actions/checkout#2224- Update package dependencies by
@salmanmkc
in actions/checkout#2236v4.2.2
url-helper.ts
now leverages well-known environment variables by@jww3
in actions/checkout#1941- Expand unit test coverage for
isGhes
by@jww3
in actions/checkout#1946v4.2.1
- Check out other refs/* by commit if provided, fall back to ref by
@orhantoy
in actions/checkout#1924v4.2.0
- Add Ref and Commit outputs by
@lucacome
in actions/checkout#1180- Dependency updates by
@dependabot
- actions/checkout#1777, actions/checkout#1872v4.1.7
- Bump the minor-npm-dependencies group across 1 directory with 4 updates by
@dependabot
in actions/checkout#1739- Bump actions/checkout from 3 to 4 by
@dependabot
in actions/checkout#1697- Check out other refs/* by commit by
@orhantoy
in actions/checkout#1774- Pin actions/checkout's own workflows to a known, good, stable version. by
@jww3
in actions/checkout#1776v4.1.6
- Check platform to set archive extension appropriately by
@cory-miller
in actions/checkout#1732v4.1.5
- Update NPM dependenci...
v4.0.8
Bump actions/upload-pages-artifact from 3 to 4 (#183)
Bumps actions/upload-pages-artifact from 3 to 4.
Release notes
Sourced from actions/upload-pages-artifact's releases.
v4.0.0
What's Changed
- Potentially breaking change: hidden files (specifically dotfiles) will not be included in the artifact by
@tsusdere
in actions/upload-pages-artifact#102 If you need to include dotfiles in your artifact: instead of using this action, create your own artifact according to these requirements https://github.com/actions/upload-pages-artifact?tab=readme-ov-file#artifact-validation- Pin
actions/upload-artifact
to SHA by@heavymachinery
in actions/upload-pages-artifact#127Full Changelog: actions/upload-pages-artifact@v3.0.1...v4.0.0
v3.0.1
Changelog
- Group tar's output to prevent it from messing up action logs
@SilverRainZ
(#94)- Update README.md
@uiolee
(#88)- Bump the non-breaking-changes group with 1 update
@dependabot
(#92)- Update Dependabot config to group non-breaking changes
@JamesMGreene
(#91)- Bump actions/checkout from 3 to 4
@dependabot
(#76)See details of all code changes since previous release.
Commits
7b1f4a7
Merge pull request #127 from heavymachinery/pin-sha4cc19c7
Pinactions/upload-artifact
to SHA2d163be
Merge pull request #107 from KittyChiu/mainc704843
fix: linted README9605915
Merge pull request #106 from KittyChiu/kittychiu/update-readme-1e59cdfe
Update README.mda2d6704
doc: updated usage section in readme984864e
Merge pull request #105 from actions/Jcambass-patch-145dc788
Add workflow file for publishing releases to immutable action packageefaad07
Merge pull request #102 from actions/hidden-files- Additional commits viewable in compare view
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase
.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebase
will rebase this PR@dependabot recreate
will recreate this PR, overwriting any edits that have been made to it@dependabot merge
will merge this PR after your CI passes on it@dependabot squash and merge
will squash and merge this PR after your CI passes on it@dependabot cancel merge
will cancel a previously requested merge and block automerging@dependabot reopen
will reopen this PR if it is closed@dependabot close
will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually@dependabot show <dependency name> ignore conditions
will show all of the ignore conditions of the specified dependency@dependabot ignore this major version
will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor version
will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependency
will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
v4.0.7
Bump actions/download-artifact from 4 to 5 (#181)
Bumps actions/download-artifact from 4 to 5.
Release notes
Sourced from actions/download-artifact's releases.
v5.0.0
What's Changed
- Update README.md by
@nebuk89
in actions/download-artifact#407- BREAKING fix: inconsistent path behavior for single artifact downloads by ID by
@GrantBirki
in actions/download-artifact#416v5.0.0
🚨 Breaking Change
This release fixes an inconsistency in path behavior for single artifact downloads by ID. If you're downloading single artifacts by ID, the output path may change.
What Changed
Previously, single artifact downloads behaved differently depending on how you specified the artifact:
- By name:
name: my-artifact
→ extracted topath/
(direct)- By ID:
artifact-ids: 12345
→ extracted topath/my-artifact/
(nested)Now both methods are consistent:
- By name:
name: my-artifact
→ extracted topath/
(unchanged)- By ID:
artifact-ids: 12345
→ extracted topath/
(fixed - now direct)Migration Guide
✅ No Action Needed If:
- You download artifacts by name
- You download multiple artifacts by ID
- You already use
merge-multiple: true
as a workaround
⚠️ Action Required If:You download single artifacts by ID and your workflows expect the nested directory structure.
Before v5 (nested structure):
- uses: actions/download-artifact@v4 with: artifact-ids: 12345 path: dist # Files were in: dist/my-artifact/Where
my-artifact
is the name of the artifact you previously uploadedTo maintain old behavior (if needed):
</tr></table>
... (truncated)
Commits
634f93c
Merge pull request #416 from actions/single-artifact-id-download-pathb19ff43
refactor: resolve download path correctly in artifact download tests (mainly ...e262cbe
bundle distbff23f9
update docsfff8c14
fix download path logic when downloading a single artifact by id448e3f8
Merge pull request #407 from actions/nebuk89-patch-147225c4
Update README.md- See full diff in compare view
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase
.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebase
will rebase this PR@dependabot recreate
will recreate this PR, overwriting any edits that have been made to it@dependabot merge
will merge this PR after your CI passes on it@dependabot squash and merge
will squash and merge this PR after your CI passes on it@dependabot cancel merge
will cancel a previously requested merge and block automerging@dependabot reopen
will reopen this PR if it is closed@dependabot close
will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually@dependabot show <dependency name> ignore conditions
will show all of the ignore conditions of the specified dependency@dependabot ignore this major version
will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor version
will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependency
will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
v4.0.6
🪲 [Fix]: Fix issue with parameters and GitHub token access (#172)
Description
This pull request updates several GitHub Actions workflows to simplify input parameters and improve artifact handling. Key changes include the removal of unused parameters (Debug
, Verbose
, Version
, and Prerelease
) and the addition of an ArtifactName
parameter for uploading artifacts. Additionally, environment variables are introduced for authentication.
Simplification of input parameters:
.github/workflows/Build-Module.yml
: Removed unused parameters (Debug
,Verbose
,Version
, andPrerelease
) and added a newArtifactName
parameter to specify the name of the artifact to upload. [1] [2]
Environment variable addition:
.github/workflows/Build-Module.yml
: Added theGH_TOKEN
environment variable for authentication using GitHub's token.
Consistency across workflows:
.github/workflows/CI.yml
and.github/workflows/workflow.yml
: Removed references to unused parameters (Debug
,Verbose
,Version
, andPrerelease
) to align with the updatedBuild-Module.yml
. [1] [2]
Type of change
- 📖 [Docs]
- 🪲 [Fix]
- 🩹 [Patch]
-
⚠️ [Security fix] - 🚀 [Feature]
- 🌟 [Breaking change]
Checklist
- I have performed a self-review of my own code
- I have commented my code, particularly in hard-to-understand areas
v4.0.5
🪲 [Fix]: Access to GH_TOKEN and Get-Settings for Name (#171)
Description
This pull request includes updates to the workflow files to improve clarity and functionality. The changes primarily focus on refining conditional logic in PowerShell scripts and enhancing environment variable handling in GitHub Actions.
Workflow improvements:
.github/workflows/Get-Settings.yml
: Updated the conditional logic for determining the$name
variable to use explicitif-elseif-else
statements, improving readability and maintainability.
Environment variable and input adjustments:
.github/workflows/workflow.yml
: Added theGH_TOKEN
environment variable to thePublish module
step to ensure authentication is handled securely..github/workflows/workflow.yml
: Reintroduced theWorkingDirectory
input to thePublish module
step for better modularity and flexibility in specifying paths.
Type of change
- 📖 [Docs]
- 🪲 [Fix]
- 🩹 [Patch]
-
⚠️ [Security fix] - 🚀 [Feature]
- 🌟 [Breaking change]
Checklist
- I have performed a self-review of my own code
- I have commented my code, particularly in hard-to-understand areas
v4.0.4
🩹 [Patch]: Remove redundant actions (#170)
Description
This pull request simplifies the workflow configuration by removing the Initialize-PSModule
step from two GitHub Actions workflows. This change reduces redundancy and streamlines the build and artifact download processes.
Workflow updates:
.github/workflows/Build-Module.yml
: Removed theInitialize-PSModule
step, which previously set up the environment for building the module..github/workflows/workflow.yml
: Removed theInitialize-PSModule
step, which was used to prepare the environment before downloading module artifacts.
Type of change
- 📖 [Docs]
- 🪲 [Fix]
- 🩹 [Patch]
-
⚠️ [Security fix] - 🚀 [Feature]
- 🌟 [Breaking change]
Checklist
- I have performed a self-review of my own code
- I have commented my code, particularly in hard-to-understand areas
v4.0.3
🩹 [Patch]: Add installation of PSCustomObject
on Test-ModuleLocal
(#166)
Description
This pull request updates the .github/workflows/Test-ModuleLocal.yml
file to optimize module loading during Pester tests by installing a required PowerShell resource.
Workflow optimization:
.github/workflows/Test-ModuleLocal.yml
: Added a step to install thePSCustomObject
module from thePSGallery
repository to streamline module loading in Pester.
Type of change
- 📖 [Docs]
- 🪲 [Fix]
- 🩹 [Patch]
-
⚠️ [Security fix] - 🚀 [Feature]
- 🌟 [Breaking change]
Checklist
- I have performed a self-review of my own code
- I have commented my code, particularly in hard-to-understand areas
v4.0.2
Description
This pull request introduces a small but important update to the GitHub Actions workflow configuration. It ensures that the latest version of the Microsoft.PowerShell.PSResourceGet
module is installed before publishing a PowerShell module.
- Fixes PSModule/NerdFonts#33
.github/workflows/workflow.yml
: Added a step to install theMicrosoft.PowerShell.PSResourceGet
module from the PSGallery repository usingInstall-PSResource
.
Type of change
- 📖 [Docs]
- 🪲 [Fix]
- 🩹 [Patch]
-
⚠️ [Security fix] - 🚀 [Feature]
- 🌟 [Breaking change]
Checklist
- I have performed a self-review of my own code
- I have commented my code, particularly in hard-to-understand areas
v4.0.1
Description
This pull request reverts changes to the .github/workflows/Test-ModuleLocal.yml
file to restore testing capabilities and module loading performance.
Details:
- Restored the
GITHUB_TOKEN
environment variable mapping, allowing it to be used in tests once more. - Restored the
Prescript
step to preload the module with a specific version, optimizing module loading during Pester tests.
v4.0.0
The PSModule v4 release is a major overhaul of the PowerShell module workflow, introducing significant architectural changes to improve speed, modularity, and maintainability. This update continues on the goal to split the once-monolithic process into distinct GitHub Actions for building, testing, documenting, and publishing modules. By refactoring the workflow into isolated steps and enabling parallel execution, v4 dramatically optimizes build and test times while ensuring a more reliable and customizable process for module developers.
Features
Parallel Testing & Results Aggregation
The workflow has been reworked to support flexible, parallelizable test runs. The Test-PSModule
action will now execute tests in parallel via matrix jobs (e.g. across multiple OSes or test stages). Separate helper actions (Get-PesterTestResults
and Get-PesterCodeCoverage
) have been introduced to aggregate Pester test outcomes and code coverage from those parallel jobs, providing unified reporting and enforcing test success and coverage thresholds across the matrix.
Central Configuration File
A new configuration hierarchy allows customizing the process through a YAML (JSON or PSD1) settings file. Users can include a .github/PSModule.yml
in their module repo to override defaults. This centralized config makes the pipeline more flexible and eliminates the need for hard-coded inputs in workflow files.
Dedicated Documentation Step
Documentation generation is now handled by a new Document-PSModule
action. This step automatically builds the module's documentation (using PlatyPS) and uploads as an artifact, so that other steps can build a site and publish it to GitHub Pages. By isolating documentation in its own action, v4 ensures that doc-specific tools (e.g. PlatyPS and MkDocs) run without interference from build or test modules, and documentation is kept up-to-date with each release.
Shared Helper Module Action
A new Install-PSModuleHelpers
action has been introduced as a foundational setup step. It installs and configures common helper functions used by the pipeline (for example, version specification conversion, module dependency resolution, and module installation utilities). This ensures all subsequent actions operate with a consistent environment and shared logic. Common functionality like resolving module dependencies (Resolve-PSModuleDependency
) and version parsing has been consolidated here, reducing duplication across the build/test/publish steps.
Enhanced Platform and Compatibility Support
The v4 workflow expands support and testing across platforms and PowerShell versions. The Test-PSModule action runs on Windows, Linux, and macOS with PowerShell Core (and includes light support for Windows PowerShell 5.1 for basic compatibility).
- Fixes #146
New test actions
Static analysis is performed via a dedicated Invoke-ScriptAnalyzer
GitHub action, and Pester tests are executed in an isolated context via the Invoke-Pester
GitHub action, ensuring consistent behavior across different environments and increases the reusability of the automation we built around Pester. The new design also honors repository-specific analyzer settings (automatically picking up settings from .github/linters/.powershell-psscriptanalyzer.psd1
in the repo for static code analysis), allowing module developers to customize linting rules.
Modular Workflows
By splitting the CI/CD process into discrete actions and enabling concurrency, the overall pipeline runtime is greatly reduced. Linting, unit tests, and integration tests can run in parallel, and the build step no longer blocks documentation or analysis. This time-optimized process means quicker feedback on pull requests and faster delivery of new module releases.
Simplified Build & Publish Process
The Build-PSModule
action has been refactored into a pure module builder. New inputs like ArtifactName
and WorkingDirectory
give more control over build output naming and source path. The build step now produces a clean module package and uploads it as an artifact called module
. Likewise, the Publish-PSModule action has been bumped to v2 with a clearer interface – it removes the old monolithic ConfigurationFile
input in favor of explicit inputs and the new central settings file. The publish logic now uses the repository’s context (working directory defaulting to .
) and respects the unified settings, simplifying how modules are published to the PowerShell Gallery.
Robust Dependency Handling
Module dependency resolution during builds is now more reliable and up-to-date. The pipeline switched to using PSResourceGet for installing required module dependencies, replacing the legacy PowerShellGet v2 approach. This change ensures compatibility with the latest PowerShell module packaging standards and improves the speed and success of acquiring dependencies. The helper scripts (Convert-VersionSpec
and Resolve-PSModuleDependency
) were moved into the shared helpers module, and their logic was hardened with better retry and null-check mechanisms when querying the PowerShell Gallery.
- Fixes #62
Better Logging and Diagnostics
Each action now provides more transparent logging and output for easier troubleshooting. The Publish step, for example, now logs all input parameters at the start of execution for traceability. Verbose logging in dependency resolution has been replaced with clear console output to ensure important information is always visible. The Get-PesterTestResults
action prints a detailed summary of test suites executed, including counts of passed/failed/skipped tests, and will mark the workflow as failed if any tests did not run or failed – giving immediate feedback if something went wrong in the parallel test jobs.
- Fixes #91
Other smaller issues
- Fixes #82
Related actions and PRs
- Install-PSModuleHelpers | PSModule/Install-PSModuleHelpers#2
- Test-PSModule | PSModule/Test-PSModule#98
- Get-PesterTestResults | PSModule/Get-PesterTestResults#2
- Get-PesterCodeCoverage | PSModule/Get-PesterCodeCoverage#1
- Invoke-Pester
- Invoke-ScriptAnalyzer
- Document-PSModule | PSModule/Document-PSModule#16
- Build-PSModule | PSModule/Build-PSModule#108
- Publish-PSModule | PSModule/Publish-PSModule#49