Tags: PSModule/Publish-PSModule
Tags
🌟 [Major]: Version calculation removed — artifact must be pre-stamped… … before publish (#71) `Publish-PSModule` no longer calculates or mutates the module version. The artifact passed in must already contain the final `ModuleVersion` (and `Prerelease` tag, if any) stamped by the upstream build. Published GitHub Releases now include a downloadable zip of the exact module folder that was tested and pushed to the Gallery. ## Breaking Changes Version-calculation inputs have been removed. Callers must supply a pre-stamped artifact: **Removed inputs:** - `AutoPatching` - `IncrementalPrerelease` - `DatePrereleaseFormat` - `VersionPrefix` - `MajorLabels`, `MinorLabels`, `PatchLabels`, `IgnoreLabels` - `ReleaseType` **Migration:** Consumers on `PSModule/Process-PSModule` get this for free — the workflow resolves the version in the Plan job and stamps it during Build. Direct callers outside of `Process-PSModule` must use [`Resolve-PSModuleVersion`](https://github.com/PSModule/Resolve-PSModuleVersion) to compute the version and [`Build-PSModule`](https://github.com/PSModule/Build-PSModule) v5+ to stamp it before invoking this action. ## New: Module zip uploaded to GitHub Release After creating a GitHub Release, the module folder is zipped (`<Name>-<Version>.zip`) and uploaded as a release asset. The zip preserves the `<Name>/` directory structure so it can be extracted directly into a PowerShell module path. ## Changed: Cleanup only runs after stable releases The cleanup step (which removes old prerelease tags/releases) now only executes when the publish was a stable release. Previously it could inadvertently delete the just-published prerelease. Cleanup also filters on `isPrerelease` to avoid accidentally deleting stable releases whose tag happens to match the derived prerelease name. ## Technical Details - Deleted `src/init.ps1` (the old version-calculation script). - `src/publish.ps1` reads `ModuleVersion` and `Prerelease` directly from the downloaded manifest via `Import-PowerShellDataFile`, validates 3-part format, then publishes untouched via `Publish-PSResource`. - `Test-ModuleManifest` is called as advisory validation (non-terminating) since the built artifact may reference `RequiredModules` not installed on the runner. Structural validation is enforced by explicit regex guards on `ModuleVersion` and `Prerelease`. - `src/cleanup.ps1` derives the prerelease name from the PR head ref, filters on `isPrerelease`, and explicitly excludes the just-published release tag from deletion. - `action.yml` cleanup step gated on `env.PSMODULE_PUBLISH_PSMODULE_CONTEXT_IsPrerelease != 'true'`. - `GITHUB_ENV` writes use `utf8NoBOM` encoding to prevent BOM corruption. - Zip upload and temp file cleanup wrapped in `try/finally` for reliable cleanup on failure. <details><summary>Related issues</summary> - Fixes PSModule/Process-PSModule#326 - PSModule/Process-PSModule#342 - PSModule/Resolve-PSModuleVersion#1 - PSModule/Build-PSModule#136 </details>
🌟 [Major]: Version calculation removed — artifact must be pre-stamped… … before publish (#71) `Publish-PSModule` no longer calculates or mutates the module version. The artifact passed in must already contain the final `ModuleVersion` (and `Prerelease` tag, if any) stamped by the upstream build. Published GitHub Releases now include a downloadable zip of the exact module folder that was tested and pushed to the Gallery. ## Breaking Changes Version-calculation inputs have been removed. Callers must supply a pre-stamped artifact: **Removed inputs:** - `AutoPatching` - `IncrementalPrerelease` - `DatePrereleaseFormat` - `VersionPrefix` - `MajorLabels`, `MinorLabels`, `PatchLabels`, `IgnoreLabels` - `ReleaseType` **Migration:** Consumers on `PSModule/Process-PSModule` get this for free — the workflow resolves the version in the Plan job and stamps it during Build. Direct callers outside of `Process-PSModule` must use [`Resolve-PSModuleVersion`](https://github.com/PSModule/Resolve-PSModuleVersion) to compute the version and [`Build-PSModule`](https://github.com/PSModule/Build-PSModule) v5+ to stamp it before invoking this action. ## New: Module zip uploaded to GitHub Release After creating a GitHub Release, the module folder is zipped (`<Name>-<Version>.zip`) and uploaded as a release asset. The zip preserves the `<Name>/` directory structure so it can be extracted directly into a PowerShell module path. ## Changed: Cleanup only runs after stable releases The cleanup step (which removes old prerelease tags/releases) now only executes when the publish was a stable release. Previously it could inadvertently delete the just-published prerelease. Cleanup also filters on `isPrerelease` to avoid accidentally deleting stable releases whose tag happens to match the derived prerelease name. ## Technical Details - Deleted `src/init.ps1` (the old version-calculation script). - `src/publish.ps1` reads `ModuleVersion` and `Prerelease` directly from the downloaded manifest via `Import-PowerShellDataFile`, validates 3-part format, then publishes untouched via `Publish-PSResource`. - `Test-ModuleManifest` is called as advisory validation (non-terminating) since the built artifact may reference `RequiredModules` not installed on the runner. Structural validation is enforced by explicit regex guards on `ModuleVersion` and `Prerelease`. - `src/cleanup.ps1` derives the prerelease name from the PR head ref, filters on `isPrerelease`, and explicitly excludes the just-published release tag from deletion. - `action.yml` cleanup step gated on `env.PSMODULE_PUBLISH_PSMODULE_CONTEXT_IsPrerelease != 'true'`. - `GITHUB_ENV` writes use `utf8NoBOM` encoding to prevent BOM corruption. - Zip upload and temp file cleanup wrapped in `try/finally` for reliable cleanup on failure. <details><summary>Related issues</summary> - Fixes PSModule/Process-PSModule#326 - PSModule/Process-PSModule#342 - PSModule/Resolve-PSModuleVersion#1 - PSModule/Build-PSModule#136 </details>
🌟 [Major]: Version calculation removed — artifact must be pre-stamped… … before publish (#71) `Publish-PSModule` no longer calculates or mutates the module version. The artifact passed in must already contain the final `ModuleVersion` (and `Prerelease` tag, if any) stamped by the upstream build. Published GitHub Releases now include a downloadable zip of the exact module folder that was tested and pushed to the Gallery. ## Breaking Changes Version-calculation inputs have been removed. Callers must supply a pre-stamped artifact: **Removed inputs:** - `AutoPatching` - `IncrementalPrerelease` - `DatePrereleaseFormat` - `VersionPrefix` - `MajorLabels`, `MinorLabels`, `PatchLabels`, `IgnoreLabels` - `ReleaseType` **Migration:** Consumers on `PSModule/Process-PSModule` get this for free — the workflow resolves the version in the Plan job and stamps it during Build. Direct callers outside of `Process-PSModule` must use [`Resolve-PSModuleVersion`](https://github.com/PSModule/Resolve-PSModuleVersion) to compute the version and [`Build-PSModule`](https://github.com/PSModule/Build-PSModule) v5+ to stamp it before invoking this action. ## New: Module zip uploaded to GitHub Release After creating a GitHub Release, the module folder is zipped (`<Name>-<Version>.zip`) and uploaded as a release asset. The zip preserves the `<Name>/` directory structure so it can be extracted directly into a PowerShell module path. ## Changed: Cleanup only runs after stable releases The cleanup step (which removes old prerelease tags/releases) now only executes when the publish was a stable release. Previously it could inadvertently delete the just-published prerelease. Cleanup also filters on `isPrerelease` to avoid accidentally deleting stable releases whose tag happens to match the derived prerelease name. ## Technical Details - Deleted `src/init.ps1` (the old version-calculation script). - `src/publish.ps1` reads `ModuleVersion` and `Prerelease` directly from the downloaded manifest via `Import-PowerShellDataFile`, validates 3-part format, then publishes untouched via `Publish-PSResource`. - `Test-ModuleManifest` is called as advisory validation (non-terminating) since the built artifact may reference `RequiredModules` not installed on the runner. Structural validation is enforced by explicit regex guards on `ModuleVersion` and `Prerelease`. - `src/cleanup.ps1` derives the prerelease name from the PR head ref, filters on `isPrerelease`, and explicitly excludes the just-published release tag from deletion. - `action.yml` cleanup step gated on `env.PSMODULE_PUBLISH_PSMODULE_CONTEXT_IsPrerelease != 'true'`. - `GITHUB_ENV` writes use `utf8NoBOM` encoding to prevent BOM corruption. - Zip upload and temp file cleanup wrapped in `try/finally` for reliable cleanup on failure. <details><summary>Related issues</summary> - Fixes PSModule/Process-PSModule#326 - PSModule/Process-PSModule#342 - PSModule/Resolve-PSModuleVersion#1 - PSModule/Build-PSModule#136 </details>
Bump actions/download-artifact from 8.0.0 to 8.0.1 (#68) Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 8.0.0 to 8.0.1. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/actions/download-artifact/releases">actions/download-artifact's releases</a>.</em></p> <blockquote> <h2>v8.0.1</h2> <h2>What's Changed</h2> <ul> <li>Support for CJK characters in the artifact name by <a href="https://github.com/danwkennedy"><code>@danwkennedy</code></a> in <a href="https://redirect.github.com/actions/download-artifact/pull/471">actions/download-artifact#471</a></li> <li>Add a regression test for artifact name + content-type mismatches by <a href="https://github.com/danwkennedy"><code>@danwkennedy</code></a> in <a href="https://redirect.github.com/actions/download-artifact/pull/472">actions/download-artifact#472</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/download-artifact/compare/v8...v8.0.1">https://github.com/actions/download-artifact/compare/v8...v8.0.1</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/actions/download-artifact/commit/3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c"><code>3e5f45b</code></a> Add regression tests for CJK characters (<a href="https://redirect.github.com/actions/download-artifact/issues/471">#471</a>)</li> <li><a href="https://github.com/actions/download-artifact/commit/e6d03f67377d4412c7aa56a8e2e4988e6ec479dd"><code>e6d03f6</code></a> Add a regression test for artifact name + content-type mismatches (<a href="https://redirect.github.com/actions/download-artifact/issues/472">#472</a>)</li> <li>See full diff in <a href="https://github.com/actions/download-artifact/compare/70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3...3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) 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-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> 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 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) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bump actions/download-artifact from 8.0.0 to 8.0.1 (#68) Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 8.0.0 to 8.0.1. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/actions/download-artifact/releases">actions/download-artifact's releases</a>.</em></p> <blockquote> <h2>v8.0.1</h2> <h2>What's Changed</h2> <ul> <li>Support for CJK characters in the artifact name by <a href="https://github.com/danwkennedy"><code>@danwkennedy</code></a> in <a href="https://redirect.github.com/actions/download-artifact/pull/471">actions/download-artifact#471</a></li> <li>Add a regression test for artifact name + content-type mismatches by <a href="https://github.com/danwkennedy"><code>@danwkennedy</code></a> in <a href="https://redirect.github.com/actions/download-artifact/pull/472">actions/download-artifact#472</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/download-artifact/compare/v8...v8.0.1">https://github.com/actions/download-artifact/compare/v8...v8.0.1</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/actions/download-artifact/commit/3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c"><code>3e5f45b</code></a> Add regression tests for CJK characters (<a href="https://redirect.github.com/actions/download-artifact/issues/471">#471</a>)</li> <li><a href="https://github.com/actions/download-artifact/commit/e6d03f67377d4412c7aa56a8e2e4988e6ec479dd"><code>e6d03f6</code></a> Add a regression test for artifact name + content-type mismatches (<a href="https://redirect.github.com/actions/download-artifact/issues/472">#472</a>)</li> <li>See full diff in <a href="https://github.com/actions/download-artifact/compare/70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3...3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) 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-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> 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 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) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bump actions/download-artifact from 8.0.0 to 8.0.1 (#68) Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 8.0.0 to 8.0.1. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/actions/download-artifact/releases">actions/download-artifact's releases</a>.</em></p> <blockquote> <h2>v8.0.1</h2> <h2>What's Changed</h2> <ul> <li>Support for CJK characters in the artifact name by <a href="https://github.com/danwkennedy"><code>@danwkennedy</code></a> in <a href="https://redirect.github.com/actions/download-artifact/pull/471">actions/download-artifact#471</a></li> <li>Add a regression test for artifact name + content-type mismatches by <a href="https://github.com/danwkennedy"><code>@danwkennedy</code></a> in <a href="https://redirect.github.com/actions/download-artifact/pull/472">actions/download-artifact#472</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/download-artifact/compare/v8...v8.0.1">https://github.com/actions/download-artifact/compare/v8...v8.0.1</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/actions/download-artifact/commit/3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c"><code>3e5f45b</code></a> Add regression tests for CJK characters (<a href="https://redirect.github.com/actions/download-artifact/issues/471">#471</a>)</li> <li><a href="https://github.com/actions/download-artifact/commit/e6d03f67377d4412c7aa56a8e2e4988e6ec479dd"><code>e6d03f6</code></a> Add a regression test for artifact name + content-type mismatches (<a href="https://redirect.github.com/actions/download-artifact/issues/472">#472</a>)</li> <li>See full diff in <a href="https://github.com/actions/download-artifact/compare/70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3...3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) 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-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> 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 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) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bump actions/download-artifact from 7.0.0 to 8.0.0 (#66) Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 7.0.0 to 8.0.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/actions/download-artifact/releases">actions/download-artifact's releases</a>.</em></p> <blockquote> <h2>v8.0.0</h2> <h2>v8 - What's new</h2> <h3>Direct downloads</h3> <p>To support direct uploads in <code>actions/upload-artifact</code>, the action will no longer attempt to unzip all downloaded files. Instead, the action checks the <code>Content-Type</code> header ahead of unzipping and skips non-zipped files. Callers wishing to download a zipped file as-is can also set the new <code>skip-decompress</code> parameter to <code>false</code>.</p> <h3>Enforced checks (breaking)</h3> <p>A previous release introduced digest checks on the download. If a download hash didn't match the expected hash from the server, the action would log a warning. Callers can now configure the behavior on mismatch with the <code>digest-mismatch</code> parameter. To be secure by default, we are now defaulting the behavior to <code>error</code> which will fail the workflow run.</p> <h3>ESM</h3> <p>To support new versions of the @actions/* packages, we've upgraded the package to ESM.</p> <h2>What's Changed</h2> <ul> <li>Don't attempt to un-zip non-zipped downloads by <a href="https://github.com/danwkennedy"><code>@danwkennedy</code></a> in <a href="https://redirect.github.com/actions/download-artifact/pull/460">actions/download-artifact#460</a></li> <li>Add a setting to specify what to do on hash mismatch and default it to <code>error</code> by <a href="https://github.com/danwkennedy"><code>@danwkennedy</code></a> in <a href="https://redirect.github.com/actions/download-artifact/pull/461">actions/download-artifact#461</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/download-artifact/compare/v7...v8.0.0">https://github.com/actions/download-artifact/compare/v7...v8.0.0</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/actions/download-artifact/commit/70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3"><code>70fc10c</code></a> Merge pull request <a href="https://redirect.github.com/actions/download-artifact/issues/461">#461</a> from actions/danwkennedy/digest-mismatch-behavior</li> <li><a href="https://github.com/actions/download-artifact/commit/f258da9a506b755b84a09a531814700b86ccfc62"><code>f258da9</code></a> Add change docs</li> <li><a href="https://github.com/actions/download-artifact/commit/ccc058e5fbb0bb2352213eaec3491e117cbc4a5c"><code>ccc058e</code></a> Fix linting issues</li> <li><a href="https://github.com/actions/download-artifact/commit/bd7976ba57ecea96e6f3df575eb922d11a12a9fd"><code>bd7976b</code></a> Add a setting to specify what to do on hash mismatch and default it to <code>error</code></li> <li><a href="https://github.com/actions/download-artifact/commit/ac21fcf45e0aaee541c0f7030558bdad38d77d6c"><code>ac21fcf</code></a> Merge pull request <a href="https://redirect.github.com/actions/download-artifact/issues/460">#460</a> from actions/danwkennedy/download-no-unzip</li> <li><a href="https://github.com/actions/download-artifact/commit/15999bff51058bc7c19b50ebbba518eaef7c26c0"><code>15999bf</code></a> Add note about package bumps</li> <li><a href="https://github.com/actions/download-artifact/commit/974686ed5098c7f9c9289ec946b9058e496a2561"><code>974686e</code></a> Bump the version to <code>v8</code> and add release notes</li> <li><a href="https://github.com/actions/download-artifact/commit/fbe48b1d2756394be4cd4358ed3bc1343b330e75"><code>fbe48b1</code></a> Update test names to make it clearer what they do</li> <li><a href="https://github.com/actions/download-artifact/commit/96bf374a614d4360e225874c3efd6893a3f285e7"><code>96bf374</code></a> One more test fix</li> <li><a href="https://github.com/actions/download-artifact/commit/b8c4819ef592cbe04fd93534534b38f853864332"><code>b8c4819</code></a> Fix skip decompress test</li> <li>Additional commits viewable in <a href="https://github.com/actions/download-artifact/compare/37930b1c2abaa49bbe596cd826c3c89aef350131...70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) 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-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> 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 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) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
🩹 [Patch]: Update Release workflow and dependencies (#61) Updates the Release workflow and action configuration. ## Changes - Updated `Release-GHRepository` action to latest version - Added comments to clarify workflow permissions - Updated action configuration
🩹[Patch]: Workflow improvements (#60) This release makes several improvements to the release workflow and supporting scripts, focusing on standardization, clarity, and modernization. The most significant changes include renaming and updating the release workflow, consolidating and improving PowerShell scripts, and cleaning up configuration files related to linters and release notes. Additionally, the scripts now use `Write-Host` for output and include more structured and readable logging. **Release Workflow Improvements** - Renamed the workflow file from `.github/workflows/Auto-Release.yml` to `.github/workflows/Release.yml`, updated the workflow name and job names, and switched from the `Auto-Release` action to the newer `Release-GHRepository` action for publishing releases. Also, restricted the workflow to trigger only on changes to `action.yml` and `src/**`. **PowerShell Script Modernization and Consolidation** - Moved PowerShell scripts from the `scripts/` directory to `src/`, updated references in `action.yml`, and improved script output by replacing `Write-Output` with `Write-Host` for better compatibility with GitHub Actions. Added more structured and visually separated log output using `Write-Host '-------------------------------------------------'`. **Configuration and Linting Cleanup** - Removed the `.github/linters/.jscpd.json` configuration file and disabled JSCPD validation in the linter workflow. - Added an exclusion for the `PSAvoidUsingWriteHost` rule in `.github/linters/.powershell-psscriptanalyzer.psd1` to allow using `Write-Host` in scripts running on GitHub Actions. **Release Notes and Input Documentation** - Removed the custom changelog configuration from `.github/release.yml` to rely on default GitHub release note generation. - Fixed a typo in the `IncrementalPrerelease` input description in `action.yml`.
🚀 [Feature]: Add ReleaseType input for explicit release control (#59) The action now supports explicit control over the release type through the new `ReleaseType` input parameter. You can specify whether to create a stable release, prerelease, or skip releasing entirely—without relying on automatic detection from PR state and labels. The workflow has also been restructured into three phases (initialization, publishing, cleanup) that run conditionally, improving efficiency when only cleanup is needed. - Part of PSModule/Process-PSModule#73 - Part of PSModule/Process-PSModule#265 ## New ReleaseType input parameter A new `ReleaseType` input allows you to explicitly control the release behavior: | Value | Description | |-------|-------------| | `Release` | Create a stable release (default) | | `Prerelease` | Create a prerelease | | `None` | Do not create any release | This input is designed to work with `Get-PSModuleSettings`, which pre-calculates the appropriate release type based on your workflow context: ```yaml - uses: PSModule/Publish-PSModule@v2 with: APIKey: ${{ secrets.PSGALLERY_API_KEY }} ReleaseType: ${{ fromJson(inputs.Settings).Publish.Module.ReleaseType }} AutoCleanup: ${{ fromJson(inputs.Settings).Publish.Module.AutoCleanup }} ``` ## Restructured workflow execution The action now runs in three separate phases, each executing only when needed: 1. **Initialize Publish Context** (`init.ps1`) – Calculates version, validates inputs, and stores context in environment variables 2. **Publish Module** (`publish.ps1`) – Downloads artifact, updates manifest, publishes to PSGallery, and creates GitHub release (runs only when `ShouldPublish` is true) 3. **Cleanup Prereleases** (`cleanup.ps1`) – Deletes old prerelease tags (runs only when `ShouldCleanup` is true) This separation means the action skips unnecessary steps. For example, when a PR is closed without merging, the workflow can run cleanup independently without downloading artifacts or attempting to publish. ## Backward compatibility The `ReleaseType` parameter defaults to `Release`, maintaining current behavior for merged PRs targeting the default branch. Existing workflows continue to work without modification. --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
PreviousNext