Releases: PSModule/Resolve-PSModuleVersion
Release list
v1.1.5
🪲 [Fix]: Resolve to the current version on non-PR events (workflow_dispatch, schedule) (#10)
On non–pull-request events (for example workflow_dispatch and schedule), the action now resolves to the current published version instead of throwing. This is the root-cause fix for the Plan failures consumers see on scheduled and manual runs.
- Part of the fix for PSModule/Process-PSModule#373
Fixed: no more throw on non–pull-request events
Previously the action required a pull_request payload and threw "...must be run from a pull_request event" on any other event. Because Process-PSModule's Plan job runs this on every event, that failed the whole run on schedule / workflow_dispatch for every consumer.
Now, when the event has no pull_request, Get-GitHubPullRequest returns $null and the caller resolves a no-op decision: no bump, no prerelease, nothing published — so Get-NextModuleVersion returns the current published version unchanged.
New: non-PR runs report the current version
There are no PR labels on workflow_dispatch / schedule, so there's nothing to bump from. The action keeps the latest published version (GitHub Release / PS Gallery), which is what a scheduled or manual re-test should build and test against. For a module that has never been released this floors at 0.0.0. Pull-request and merge-to-default-branch behavior is unchanged — labels drive the bump, with patch as the default.
Technical Details
scripts/Resolve-PSModuleVersion.Helpers.psm1:Get-GitHubPullRequestreturns$nullon a non-PR event instead of throwing.scripts/main.ps1: builds a no-op release decision (all flagsfalse, empty prerelease) when there is no pull request, otherwise callsResolve-ReleaseDecisionas before.Get-NextModuleVersionthen returnsLatestVersionunchanged.tests/: added cases asserting the no-op decision keeps the current version (1.2.3and the0.0.0floor) with no bump and no prerelease. Full suite: 159 passed, PSScriptAnalyzer clean.- Follow-up: once released, Process-PSModule bumps its
Resolve-Versionpin to this version, which lets itsPlan.ymlgate +999.0.0fallback in PR #375 be dropped.
v1.1.4
🪲 [Fix]: Version previews reflect the version-bump label regardless of release type (#9)
Version-bump labels (major, minor, patch) are now always evaluated when resolving a module version, so the version a run reports always matches what those labels would produce. Previously, on pull_request events (ReleaseType = None) the resolver ignored the labels and always previewed a patch prerelease, which made pull request previews misleading. ReleaseType — and the prerelease label that drives it — now only controls whether and how a version is published, never the size of the version increment.
- Part of PSModule/Process-PSModule#378
Fixed: Pull request previews now reflect the version-bump label
The resolved version on a non-publishing run now reflects the bump label instead of always showing a patch. Publishing behavior is unchanged — only the previewed version changes for label combinations that were previously never evaluated.
| Situation | Before | After |
|---|---|---|
Open PR, minor label, no prerelease label |
x.y.z+1 patch preview |
x.(y+1).0 minor preview (still not published) |
Open PR, major label, no prerelease label |
x.y.z+1 patch preview |
(x+1).0.0 major preview (still not published) |
PR with prerelease label |
publishes a prerelease | unchanged — prerelease still gates publishing |
Merge to main with minor label |
minor release | unchanged |
Technical Details
scripts/Resolve-PSModuleVersion.Helpers.psm1(Resolve-ReleaseDecision): themajor/minor/patchlabel evaluation was moved out from behind theif ($shouldPublish)guard so it always runs. When no bump label is present andAutoPatchingis disabled, the run still previews a patch version but setsShouldPublish = $false. Any run that is not a published full release continues to be surfaced as a prerelease (CreatePrerelease = $true).tests/Resolve-PSModuleVersion.Helpers.Tests.Data.psd1: addedReleaseDecisionandEndToEndcases forNone + minorandNone + majorpreviews. All existingReleaseDecision,EndToEnd, andNextModuleVersioncases are unchanged.- Validation: 157/157 Pester tests pass; PSScriptAnalyzer clean.
- E2E:
MariusStorhaug/MariusTestModulePR #34 (labelledMinor, noprereleaselabel) now previewsv0.5.0-teste2eimporttestdata001withShouldPublish = False(previouslyv0.4.2-…). - Relates to
PSModule/Process-PSModule#378.
v1.1.3
Bump actions/checkout from 6.0.2 to 7.0.0 (#6)
Bumps actions/checkout from 6.0.2 to 7.0.0.
Release notes
Sourced from actions/checkout's releases.
v7.0.0
What's Changed
- block checking out fork pr for pull_request_target and workflow_run by
@aiqiaoyin actions/checkout#2454- Bump actions/publish-immutable-action from 0.0.3 to 0.0.4 in the minor-actions-dependencies group across 1 directory by
@dependabot[bot] in actions/checkout#2458- Bump flatted from 3.3.1 to 3.4.2 by
@dependabot[bot] in actions/checkout#2460- Bump js-yaml from 4.1.0 to 4.2.0 by
@dependabot[bot] in actions/checkout#2461- Bump
@actions/coreand@actions/tool-cacheand Remove uuid by@dependabot[bot] in actions/checkout#2459- upgrade module to esm and update dependencies by
@aiqiaoyin actions/checkout#2463- Bump the minor-npm-dependencies group across 1 directory with 3 updates by
@dependabot[bot] in actions/checkout#2462- getting ready for checkout v7 release by
@aiqiaoyin actions/checkout#2464- update error wording by
@aiqiaoyin actions/checkout#2467New Contributors
@aiqiaoymade their first contribution in actions/checkout#2454Full Changelog: actions/checkout@v6.0.3...v7.0.0
v6.0.3
What's Changed
- Update changelog by
@ericsciplein actions/checkout#2357- fix: expand merge commit SHA regex and add SHA-256 test cases by
@yaananthin actions/checkout#2414- Fix checkout init for SHA-256 repositories by
@yaananthin actions/checkout#2439- Update changelog for v6.0.3 by
@yaananthin actions/checkout#2446New Contributors
@yaananthmade their first contribution in actions/checkout#2414Full Changelog: actions/checkout@v6...v6.0.3
Changelog
Sourced from actions/checkout's changelog.
Changelog
v7.0.0
- Block checking out fork PR for pull_request_target and workflow_run by
@aiqiaoyin actions/checkout#2454- Bump actions/publish-immutable-action from 0.0.3 to 0.0.4 in the minor-actions-dependencies group across 1 directory by
@dependabot[bot] in actions/checkout#2458- Bump flatted from 3.3.1 to 3.4.2 by
@dependabot[bot] in actions/checkout#2460- Bump js-yaml from 4.1.0 to 4.2.0 by
@dependabot[bot] in actions/checkout#2461- Bump
@actions/coreand@actions/tool-cacheand Remove uuid by@dependabot[bot] in actions/checkout#2459- upgrade module to esm and update dependencies by
@aiqiaoyin actions/checkout#2463- Bump the minor-npm-dependencies group across 1 directory with 3 updates by
@dependabot[bot] in actions/checkout#2462v6.0.3
- Fix checkout init for SHA-256 repositories by
@yaananthin actions/checkout#2439- fix: expand merge commit SHA regex and add SHA-256 test cases by
@yaananthin actions/checkout#2414v6.0.2
- Fix tag handling: preserve annotations and explicit fetch-tags by
@ericsciplein actions/checkout#2356v6.0.1
- Add worktree support for persist-credentials includeIf by
@ericsciplein actions/checkout#2327v6.0.0
- Persist creds to a separate file by
@ericsciplein actions/checkout#2286- Update README to include Node.js 24 support details and requirements by
@salmanmkcin actions/checkout#2248v5.0.1
- Port v6 cleanup to v5 by
@ericsciplein actions/checkout#2301v5.0.0
- Update actions checkout to use node 24 by
@salmanmkcin actions/checkout#2226v4.3.1
- Port v6 cleanup to v4 by
@ericsciplein actions/checkout#2305v4.3.0
- docs: update README.md by
@motssin actions/checkout#1971- Add internal repos for checking out multiple repositories by
@mouismailin actions/checkout#1977- Documentation update - add recommended permissions to Readme by
@benwellsin actions/checkout#2043- Adjust positioning of user email note and permissions heading by
@joshmgrossin actions/checkout#2044- Update README.md by
@nebuk89in actions/checkout#2194- Update CODEOWNERS for actions by
@TingluoHuangin actions/checkout#2224- Update package dependencies by
@salmanmkcin actions/checkout#2236v4.2.2
url-helper.tsnow leverages well-known environment variables by@jww3in
v1.1.2
Bump super-linter/super-linter from 8.6.0 to 8.7.0 (#7)
Bumps super-linter/super-linter from 8.6.0 to 8.7.0.
Release notes
Sourced from super-linter/super-linter's releases.
v8.7.0
8.7.0 (2026-06-18)
🚀 Features
- powershell ansi output and dynamic sizing (#7793) (b573256), closes #7445
- update existing pr summary comment (#7848) (85afaee)
🐛 Bugfixes
- docs: don't mention extension in bash-exec (#7708) (56c7c3c)
- enable_github_actions_step_summary ref in debug log (#7853) (8c38f8f)
- ktlint installation (#7883) (6ab7200)
- output: pass comment payload via stdin to jq and curl (#7928) (4dd300c)
- remove debug statement when calling gh api (#7889) (30ed3d5)
- terragrunt version lookup (#7918) (a2eaeb1)
⬆️ Dependency updates
- bundler: bump rubocop (#7923) (0738987)
- bundler: bump rubocop in /dependencies in the rubocop group (#7731) (bf2414c)
- bundler: bump rubocop-capybara (#7781) (35ef3f6)
- bundler: bump the rubocop group across 1 directory with 2 updates (#7816) (5a6de32)
- bundler: bump the rubocop group across 1 directory with 3 updates (#7875) (4d01de2)
- bundler: bump the rubocop group in /dependencies with 2 updates (#7890) (cd79eea)
- docker: bump dart in the docker group (#7755) (86c9c54)
- docker: bump goreleaser/goreleaser in the docker group (#7705) (487d0d8)
- docker: bump mvdan/shfmt in the docker group (#7718) (a1fc30a)
- docker: bump python (#7730) (c5fb918)
- docker: bump the docker group across 1 directory with 10 updates (#7817) (5e3985b)
- docker: bump the docker group across 1 directory with 11 updates (#7876) (9bc8ec9)
- docker: bump the docker group across 1 directory with 3 updates (#7765) (d9f1398)
- docker: bump the docker group across 1 directory with 5 updates (#7786) (b7ba6a5)
- docker: bump the docker group across 1 directory with 6 updates (#7912) (7b70a50)
- docker: bump the docker group across 1 directory with 8 updates (#7753) (3fec5a3)
- java: bump com.puppycrawl.tools:checkstyle (#7788) (4a69c1a)
- java: bump com.puppycrawl.tools:checkstyle (#7914) (65ad252)
- npm: bump
@hono/node-serverin /dependencies (#7720) (a8c6363)- npm: bump
@protobufjs/utf8from 1.1.0 to 1.1.1 in /dependencies (#7812) (0651d17)- npm: bump
@stoplight/spectral-cliin /dependencies (#7743) (fd0d01c)- npm: bump
@stoplight/spectral-cliin /dependencies (#7814) (813e4fb)- npm: bump brace-expansion (#7840) (f6e64b5)
- npm: bump fast-uri from 3.0.6 to 3.1.2 in /dependencies (#7803) (9253b88)
- npm: bump fast-xml-builder from 1.1.4 to 1.2.0 in /dependencies (#7802) (5b044ae)
- npm: bump hono from 4.12.14 to 4.12.18 in /dependencies (
v1.1.1
🩹 [Patch]: Name the helper module after the action (Resolve-PSModuleVersion.Helpers) (#8)
Aligns the helper module with the action helper-module naming standard: name it after the action (Resolve-PSModuleVersion.Helpers) instead of a generic name.
PR #4 introduced the interim name ResolveVersion to fix the Helpers collision; this brings it to the ecosystem-wide convention (<Action>.Helpers) now that the standard is in place.
Changes
scripts/ResolveVersion.psm1→scripts/Resolve-PSModuleVersion.Helpers.psm1tests/ResolveVersion.Tests.ps1→tests/Resolve-PSModuleVersion.Helpers.Tests.ps1tests/ResolveVersion.Tests.Data.psd1→tests/Resolve-PSModuleVersion.Helpers.Tests.Data.psd1- Updated the entry-script import (
scripts/main.ps1), the test module import, the test data-file path, and the twoMock -ModuleNamereferences. Kept the frameworkImport-Module -Name 'Helpers'.
No runtime logic changed (100% file rename + reference updates).
Validation
Tests pass 131/131 under a simulated Helpers name collision (a second module named Helpers loaded before Invoke-Pester). PSScriptAnalyzer clean apart from the pre-existing PSAvoidUsingWriteHost warnings (unchanged module body).
Part of PSModule/Process-PSModule#364. Standard: the "Name helper modules after the action" rule in the GitHub Actions coding standard (MSXOrg/docs#24).
v1.1.0
🚀 [Feature]: Version output always emitted regardless of publish decision (#4)
The action now always emits a valid Version and FullVersion output, even when no release will be created. Non-publishable builds receive a development prerelease version so downstream jobs always have a version to stamp into the artifact.
New: Development prerelease version for non-publishable builds
When ShouldPublish is false, the action now emits a development prerelease version (e.g. 1.2.4-mybranch001) instead of empty strings. The CreateRelease output remains false — downstream jobs continue to use this flag to gate publishing.
When ShouldPublish is true, behavior is unchanged.
Technical Details
- Moved version resolution (GitHub releases + PSGallery query) outside the
ShouldPublishconditional so it always executes. - When
ShouldPublishisfalse, the existingGet-NextModuleVersionis called with a forced patch bump and the branch-based prerelease tag (reusing existingIncrementalPrerelease/DatePrereleaseFormatlogic). - Made
Write-ActionOutput'sNewVersionparameter mandatory (always receives a value now). - Added Pester tests covering all non-publish scenarios and existing bump behavior.
- Implementation plan progress: Core changes and Tests tasks in PSModule/Process-PSModule#348 completed; Validation task remains.
Related issues
v1.0.1
Refactor version resolution logic into helper functions (#2)
Summary
Refactor the action script by moving the version resolution workflow out of scripts/main.ps1 and into a dedicated scripts/Helpers.psm1 module.
This keeps main.ps1 as a thin orchestrator and makes the individual steps easier to read, compare, and validate.
Changes
- extract action input parsing into
Read-ActionInput - extract publish settings parsing into
Get-PublishConfiguration - extract pull request event loading into
Get-GitHubPullRequest - extract release decision logic into
Resolve-ReleaseDecision - extract GitHub and PowerShell Gallery version lookups into dedicated helpers
- extract next-version calculation and action output writing into dedicated helpers
- update
scripts/main.ps1to orchestrate the helper calls
Notes
- Intended behavior is unchanged for the normal release/version resolution path.
- Error handling now throws from helper functions instead of using inline
Write-Error/exitinmain.ps1.
Validation
- verified the refactor against
mainwithgit diff --function-context - verified both edited PowerShell files report no editor errors locally
v1.0.0
🌟 [Major]: Module version resolution now available as a standalone action (#1)
Module version resolution is now available as a standalone action. Workflows can call it before building so the resolved version is stamped into the artifact at build time, making the bytes that are tested the bytes that ship.
- Resolves PSModule/Process-PSModule#326
New: Standalone Resolve-PSModuleVersion action
The action consumes the JSON Settings output from PSModule/Get-PSModuleSettings and emits:
| Output | Description |
|---|---|
Version |
Major.Minor.Patch portion of the resolved version. |
Prerelease |
Prerelease tag, empty when not a prerelease. |
FullVersion |
Full version string including VersionPrefix and prerelease tag. |
ReleaseType |
Release, Prerelease, or None when no version bump label is present. |
CreateRelease |
true when a release or prerelease should be created. |
Typical usage in the Plan job:
- name: Resolve module version
id: resolve
uses: PSModule/Resolve-PSModuleVersion@v1
env:
GH_TOKEN: ${{ github.token }}
with:
Settings: ${{ steps.settings.outputs.Settings }}
- name: Build module
uses: PSModule/Build-PSModule@v5
with:
Version: ${{ steps.resolve.outputs.Version }}
Prerelease: ${{ steps.resolve.outputs.Prerelease }}The action validates Settings.Publish.Module.ReleaseType, applies IgnoreLabels overrides, picks the bump type from PR labels (MajorLabels > MinorLabels > PatchLabels / AutoPatching), then computes the next version from the higher of the latest GitHub Release and the latest PowerShell Gallery version. For prereleases it appends the sanitized branch name, optional DatePrereleaseFormat timestamp, and an incremental counter calculated from existing prereleases on the same baseline + branch.
Technical Details
action.yml: composite action with inputsSettings(required JSON),Name,WorkingDirectory,Debug,Verbose,Version,Prerelease, plusEventPathandEventJson(both optional, for test overrides —EventJsontakes precedence over reading the file atEventPath). All${{ }}template expressions are isolated inenv:sections per zizmor template-injection requirements. InstallsPSModule/Install-PSModuleHelpersandPSSemVerbefore running the script.scripts/main.ps1: ports the version-resolution logic that previously lived inPublish-PSModule/src/init.ps1. Reads configuration fromPSMODULE_RESOLVE_PSMODULEVERSION_INPUT_SettingsJSON instead of separate env vars. Reads the PR event fromPSMODULE_RESOLVE_PSMODULEVERSION_INPUT_EventJsonwhen set, falling back to the file atGITHUB_EVENT_PATH. Emits outputs via$env:GITHUB_OUTPUT. Cleanup-tag discovery stays inPublish-PSModule/cleanup.ps1and is intentionally out of scope here..github/workflows/Action-Test.yml: 6 test jobs covering patch, minor, major, auto-patch, ignore-label, and None scenarios. The ignore-label job passes the fake PR event as a JSON string viaEventJsonto bypass the runner's real event file, which cannot be reliably overridden at the file-system level.README.md: replaces the template scaffold with the action's contract and usage examples.
Implementation plan progress (PSModule/Process-PSModule#326):
- ✅ Create
Resolve-PSModuleVersion(LICENSE, README,action.yml,scripts/main.ps1, Action-Test workflow) - ✅ Inputs:
Settings,Name,WorkingDirectory(plusEventPath/EventJsonfor test overrides) - ✅ Outputs:
Version,Prerelease,FullVersion,ReleaseType,CreateRelease - ✅ Port version-resolution logic from
Publish-PSModule/src/init.ps1(PSSemVer install, GitHub Releases query, PSGallery query, PR-label parsing, bump selection, prerelease sequencing,DatePrereleaseFormat,VersionPrefix) - ⬜ Dedicated Pester unit tests for label parsing, bump selection, and prerelease sequencing — covered by the six integration test jobs; a focused unit-test suite remains open
Related PRs:
- PSModule/Process-PSModule#342 — rewires the workflow's Plan → Build → Test → Publish chain to consume the resolved version.
- PSModule/Build-PSModule#136 — accepts
Version/Prereleaseinputs and stamps them into the manifest at build time. - PSModule/Publish-PSModule#71 — removes the version-calculation logic that moved here.