Skip to content

Releases: PSModule/Process-PSModule

v4.0.6

02 Jun 02:01
7120d0c
Compare
Choose a tag to compare

🪲 [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, and Prerelease) and added a new ArtifactName parameter to specify the name of the artifact to upload. [1] [2]

Environment variable addition:

  • .github/workflows/Build-Module.yml: Added the GH_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, and Prerelease) to align with the updated Build-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

02 Jun 01:38
f1008b1
Compare
Choose a tag to compare

🪲 [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 explicit if-elseif-else statements, improving readability and maintainability.

Environment variable and input adjustments:

  • .github/workflows/workflow.yml: Added the GH_TOKEN environment variable to the Publish module step to ensure authentication is handled securely.
  • .github/workflows/workflow.yml: Reintroduced the WorkingDirectory input to the Publish 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

01 Jun 23:39
f5eba0b
Compare
Choose a tag to compare

🩹 [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 the Initialize-PSModule step, which previously set up the environment for building the module.
  • .github/workflows/workflow.yml: Removed the Initialize-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

20 May 23:00
0de5aa6
Compare
Choose a tag to compare

🩹 [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 the PSCustomObject module from the PSGallery 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

01 May 16:07
d0f553d
Compare
Choose a tag to compare

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.

  • .github/workflows/workflow.yml: Added a step to install the Microsoft.PowerShell.PSResourceGet module from the PSGallery repository using Install-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

20 Apr 08:49
4e5d875
Compare
Choose a tag to compare

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

19 Apr 14:11
dc04f94
Compare
Choose a tag to compare

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.

image

Diagram - Old version

image

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).

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.

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.

Other smaller issues

Related actions and PRs

v3.2.17

14 Feb 09:16
44ceccb
Compare
Choose a tag to compare

What's Changed

Other Changes

Full Changelog: v3...v3.2.17

v3.2.16

14 Feb 07:24
175c6b8
Compare
Choose a tag to compare

What's Changed

Other Changes

  • 🪲 [Fix]: Fix an issue that break the workflow when there is nothing to commit in BuildDocs by @MariusStorhaug in #137

Full Changelog: v3...v3.2.16

v3.2.15

13 Feb 21:37
da1f460
Compare
Choose a tag to compare

What's Changed

Other Changes

Full Changelog: v3...v3.2.15