-
Notifications
You must be signed in to change notification settings - Fork 0
Release Process
This page documents how to ship a new version of SPSTrust. The process is centered on a
single source of truth — the ModuleVersion field of SPSTrust.Common.psd1 — and a v*
git tag that triggers the GitHub release workflow.
SPSTrust follows Semantic Versioning 2.0.
| Bump | When |
|---|---|
| MAJOR (X.0.0) | Breaking change in the package layout, the configuration schema, or a public module function signature. |
| MINOR (X.Y.0) | New backward-compatible feature (new parameter, new public function, new capability). |
| PATCH (X.Y.Z) | Bug fix or documentation-only change. |
Edit one value in src/Modules/SPSTrust.Common/SPSTrust.Common.psd1:
ModuleVersion = '2.0.0' # was '1.0.0'This single change propagates automatically to the script banner
($SPSTrustVersion is read from (Get-Module SPSTrust.Common).Version).
Add a dated section for the version being released, following Keep a Changelog.
RELEASE-NOTES.md is used verbatim as the body of the GitHub Release. It must contain
only the section of the version being released (no stacked history).
Import-Module .\src\Modules\SPSTrust.Common\SPSTrust.Common.psd1 -Force
(Get-Module SPSTrust.Common).Version # should match the bumped version
Invoke-Pester -Path .\tests
Invoke-ScriptAnalyzer -Path .\src -Recurse -Settings .\PSScriptAnalyzerSettings.psd1git checkout -b Release/2.0.0
git add -A
git commit -m "release: v2.0.0"
git push -u origin Release/2.0.0Test the branch ZIP on a real farm first, then open a Pull Request, review, and merge to main.
git checkout main
git pull
git tag v2.0.0
git push origin v2.0.0The .github/workflows/release.yml workflow runs automatically. It:
- Packages the contents of
src/intoSPSTrust-v2.0.0.zip(the archive extracts straight toSPSTrust.ps1andModules\, with nosrc/wrapper). - Publishes a GitHub Release using
RELEASE-NOTES.mdas the body. - Attaches the ZIP and
LICENSEto the release.
- Releases: https://github.com/luigilink/SPSTrust/releases — the new release is listed with the expected body and ZIP.
-
Actions: https://github.com/luigilink/SPSTrust/actions —
release.ymlandpester.ymlran green. -
Wiki: https://github.com/luigilink/SPSTrust/wiki —
wiki.ymlsynced anywiki/changes pushed in the same release.
If you tagged too early:
git tag -d v2.0.0
git push origin --delete v2.0.0Then delete the auto-created Release on GitHub, fix what needs fixing, commit, and re-tag from the new HEAD.
⚠️ Don't move a published tag that has been live for more than a few minutes. Prefer publishing avX.Y.(Z+1)patch release instead of rewritingvX.Y.Z.