Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
12fbf54
Rename Get-Settings workflow to Plan and add Resolve-PSModuleVersion …
MariusStorhaug May 22, 2026
f62e29f
Rewire Process-PSModule workflow jobs to use the Plan job
MariusStorhaug May 22, 2026
821cd03
Forward ModuleVersion and ModulePrerelease into Build-PSModule
MariusStorhaug May 22, 2026
9461604
Drop version-calculation inputs from Publish-Module
MariusStorhaug May 22, 2026
4072d6e
Document the Plan job and the release-asset upload guarantee
MariusStorhaug May 22, 2026
7d80faa
Document version resolution algorithm in Plan section
MariusStorhaug May 22, 2026
5dd0c7e
Refactor permissions formatting in workflow files for consistency
MariusStorhaug May 24, 2026
0b0b7a3
Update Resolve-PSModuleVersion to v1.0.1
MariusStorhaug May 24, 2026
7385a29
Update Build-PSModule to v4.1
MariusStorhaug May 24, 2026
df0f1c4
Fall back to 0.0.0 when no ModuleVersion is resolved
MariusStorhaug May 24, 2026
87cf094
Merge version outputs into Settings object; update README to be decla…
MariusStorhaug May 25, 2026
19b2789
Tighten Plan section: describe only what Plan does, not downstream ef…
MariusStorhaug May 25, 2026
3d17465
Fix Build module description: correct sequence, remove downstream com…
MariusStorhaug May 25, 2026
a0ebb46
Remove VSCode settings file to streamline project configuration
MariusStorhaug May 26, 2026
d5674cf
fix: repin Build-PSModule@v5.0.0 and Publish-PSModule@v3.0.0 to relea…
MariusStorhaug May 27, 2026
6f4d0ed
refactor: remove conditional check for Resolve-Version step
MariusStorhaug May 27, 2026
13e4ce6
fix: correct API key secret name to uppercase in workflow configuration
MariusStorhaug May 27, 2026
336fac6
Merge branch 'main' into feat/326-resolve-psmodule-version
MariusStorhaug May 27, 2026
7d06f07
Merge branch 'main' into feat/326-resolve-psmodule-version
MariusStorhaug Jul 8, 2026
5a438a1
Match Resolve-PSModuleVersion v1.1.0 interface in Plan.yml
MariusStorhaug Jul 8, 2026
2c8a83a
Test-ModuleLocal: use resolved version; TEMP repin Install-PSModuleHe…
MariusStorhaug Jul 8, 2026
fc226cb
TEMP: repin Test-PSModule (PR#119) + bump Install-PSModuleHelpers pin…
MariusStorhaug Jul 8, 2026
6c04ced
TEMP: repin Document-PSModule (PR#52) for Build-Docs
MariusStorhaug Jul 8, 2026
99d2fe2
Merge main into feat/326-resolve-psmodule-version; finalize pins
MariusStorhaug Jul 9, 2026
fbf31ec
Merge remote-tracking branch 'origin/main' into feat/326-resolve-psmo…
MariusStorhaug Jul 9, 2026
d5ddf98
Bump remaining action pins to latest (dependency check)
MariusStorhaug Jul 9, 2026
efe1213
Normalize workflow_call secret name to APIKey
MariusStorhaug Jul 9, 2026
4a69251
docs: fix stale ReleaseType output reference in no-release behavior
MariusStorhaug Jul 9, 2026
3b6c935
fix: quote -RequiredVersion and align Build-Module fallback to 999.0.…
MariusStorhaug Jul 9, 2026
dac345c
docs: add missing comma in Plan section
MariusStorhaug Jul 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 13 additions & 1 deletion .github/workflows/Build-Module.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,16 @@
description: Name of the artifact to upload.
required: false
default: module
ModuleVersion:
type: string
description: The Major.Minor.Patch version to stamp into the built manifest. Empty falls back to '999.0.0'.
required: false
default: ''
ModulePrerelease:
type: string
description: Optional prerelease tag to stamp into the built manifest.
required: false
default: ''

permissions:
contents: read # to checkout the repository
Expand All @@ -30,8 +40,10 @@
fetch-depth: 0

- name: Build module
uses: PSModule/Build-PSModule@345728124d201f371a8b0f1aacb98f89000a06dc # v4.0.14
uses: PSModule/Build-PSModule@main

Check warning

Code scanning / CodeQL

Unpinned tag for a non-immutable Action in workflow or composite action Medium

Unpinned 3rd party Action 'Build-Module' step
Uses Step
uses 'PSModule/Build-PSModule' with ref 'main', not a pinned commit hash
Comment thread
github-advanced-security[bot] marked this conversation as resolved.
Fixed
with:
Name: ${{ fromJson(inputs.Settings).Name }}
Version: ${{ inputs.ModuleVersion }}
Prerelease: ${{ inputs.ModulePrerelease }}
ArtifactName: ${{ inputs.ArtifactName }}
Comment thread
MariusStorhaug marked this conversation as resolved.
WorkingDirectory: ${{ fromJson(inputs.Settings).WorkingDirectory }}
Original file line number Diff line number Diff line change
@@ -1,4 +1,10 @@
name: Get-Settings
name: Plan

# The Plan job is the single decision point for the workflow.
# It runs two steps:
# 1. Get-PSModuleSettings - loads and resolves configuration
# 2. Resolve-PSModuleVersion - calculates the next version from settings + PR labels
# All downstream jobs consume the Settings JSON and the resolved version outputs from this job.

on:
workflow_call:
Expand Down Expand Up @@ -45,19 +51,39 @@

outputs:
Settings:
description: The complete settings object including test suites
value: ${{ jobs.Get-Settings.outputs.Settings }}
description: The complete settings object including test suites.
value: ${{ jobs.Plan.outputs.Settings }}
ModuleVersion:
description: The Major.Minor.Patch part of the next version.
value: ${{ jobs.Plan.outputs.ModuleVersion }}
ModulePrerelease:
description: The prerelease tag, empty string when not a prerelease.
value: ${{ jobs.Plan.outputs.ModulePrerelease }}
ModuleFullVersion:
description: The full version string including prefix and prerelease tag (for example v1.4.0).
value: ${{ jobs.Plan.outputs.ModuleFullVersion }}
ReleaseType:
description: The release type - Release, Prerelease, or None.
value: ${{ jobs.Plan.outputs.ReleaseType }}
CreateRelease:
description: 'true when a release/prerelease should actually be created.'
value: ${{ jobs.Plan.outputs.CreateRelease }}

permissions:
contents: read # to checkout the repo
pull-requests: write # to add labels to PRs
pull-requests: write # to add labels / comments to PRs

jobs:
Get-Settings:
name: Get-Settings
Plan:
name: Plan
runs-on: ubuntu-latest
outputs:
Settings: ${{ steps.Get-Settings.outputs.Settings }}
ModuleVersion: ${{ steps.Resolve-Version.outputs.Version }}
ModulePrerelease: ${{ steps.Resolve-Version.outputs.Prerelease }}
ModuleFullVersion: ${{ steps.Resolve-Version.outputs.FullVersion }}
ReleaseType: ${{ steps.Resolve-Version.outputs.ReleaseType }}
CreateRelease: ${{ steps.Resolve-Version.outputs.CreateRelease }}
steps:
- name: Checkout Code
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
Expand All @@ -76,3 +102,18 @@
Version: ${{ inputs.Version }}
WorkingDirectory: ${{ inputs.WorkingDirectory }}
ImportantFilePatterns: ${{ inputs.ImportantFilePatterns }}

- name: Resolve-Version
# Resolve only when the workflow is going to create a release/prerelease.
if: fromJson(steps.Get-Settings.outputs.Settings).Publish.Module.ReleaseType != 'None'
uses: PSModule/Resolve-PSModuleVersion@main

Check warning

Code scanning / CodeQL

Unpinned tag for a non-immutable Action in workflow or composite action Medium

Unpinned 3rd party Action 'Plan' step
Uses Step: Resolve-Version
uses 'PSModule/Resolve-PSModuleVersion' with ref 'main', not a pinned commit hash
Comment thread
github-advanced-security[bot] marked this conversation as resolved.
Fixed
id: Resolve-Version
env:
GH_TOKEN: ${{ github.token }}
with:
Comment thread
MariusStorhaug marked this conversation as resolved.
Settings: ${{ steps.Get-Settings.outputs.Settings }}
Debug: ${{ inputs.Debug }}
Prerelease: ${{ inputs.Prerelease }}
Verbose: ${{ inputs.Verbose }}
Version: ${{ inputs.Version }}
WorkingDirectory: ${{ inputs.WorkingDirectory }}
13 changes: 2 additions & 11 deletions .github/workflows/Publish-Module.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
required: true

permissions:
contents: write # to checkout the repo and create releases
contents: write # to checkout the repo, create releases, and upload release artifacts
pull-requests: write # to comment on PRs

jobs:
Expand All @@ -30,7 +30,7 @@
fetch-depth: 0

- name: Publish module
uses: PSModule/Publish-PSModule@8917aed588dae1bd1aa2873b1caec1c50c20d255 # v2.2.4
uses: PSModule/Publish-PSModule@main

Check warning

Code scanning / CodeQL

Unpinned tag for a non-immutable Action in workflow or composite action Medium

Unpinned 3rd party Action 'Publish-Module' step
Uses Step
uses 'PSModule/Publish-PSModule' with ref 'main', not a pinned commit hash
Comment thread
github-advanced-security[bot] marked this conversation as resolved.
Fixed
env:
GH_TOKEN: ${{ github.token }}
with:
Expand All @@ -39,15 +39,6 @@
APIKey: ${{ secrets.APIKEY }}
Comment thread
MariusStorhaug marked this conversation as resolved.
Outdated
Comment thread
Copilot marked this conversation as resolved.
Outdated
WhatIf: ${{ github.repository == 'PSModule/Process-PSModule' }}
AutoCleanup: ${{ fromJson(inputs.Settings).Publish.Module.AutoCleanup }}
AutoPatching: ${{ fromJson(inputs.Settings).Publish.Module.AutoPatching }}
DatePrereleaseFormat: ${{ fromJson(inputs.Settings).Publish.Module.DatePrereleaseFormat }}
IgnoreLabels: ${{ fromJson(inputs.Settings).Publish.Module.IgnoreLabels }}
ReleaseType: ${{ fromJson(inputs.Settings).Publish.Module.ReleaseType }}
IncrementalPrerelease: ${{ fromJson(inputs.Settings).Publish.Module.IncrementalPrerelease }}
MajorLabels: ${{ fromJson(inputs.Settings).Publish.Module.MajorLabels }}
MinorLabels: ${{ fromJson(inputs.Settings).Publish.Module.MinorLabels }}
PatchLabels: ${{ fromJson(inputs.Settings).Publish.Module.PatchLabels }}
VersionPrefix: ${{ fromJson(inputs.Settings).Publish.Module.VersionPrefix }}
UsePRTitleAsReleaseName: ${{ fromJson(inputs.Settings).Publish.Module.UsePRTitleAsReleaseName }}
UsePRBodyAsReleaseNotes: ${{ fromJson(inputs.Settings).Publish.Module.UsePRBodyAsReleaseNotes }}
UsePRTitleAsNotesHeading: ${{ fromJson(inputs.Settings).Publish.Module.UsePRTitleAsNotesHeading }}
Expand Down
Loading
Loading