Skip to content

Commit 5f1bf27

Browse files
Document namespaced release defaults
1 parent 06174d2 commit 5f1bf27

13 files changed

Lines changed: 86 additions & 69 deletions

.github/workflows/workflow.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,7 @@ jobs:
251251
Settings: ${{ needs.Plan.outputs.Settings }}
252252

253253
# Runs on:
254-
# - ✅ Open/Updated PR - Only with prerelease label: publishes prerelease version
254+
# - ✅ Open/Updated PR - With prerelease intent and a resolved bump: publishes a prerelease
255255
# - ✅ Default push - Publishes a stable release when all tests/coverage/build succeed
256256
# - ✅ Closed PR - Cleans up prereleases for the closed branch (no version published)
257257
# - ✅ Manual run - Publishes a stable default-branch release

docs/content/get-started/repository-setup.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ permissions:
6363

6464
jobs:
6565
Process-PSModule:
66-
uses: PSModule/Process-PSModule/.github/workflows/workflow.yml@v8
66+
uses: PSModule/Process-PSModule/.github/workflows/workflow.yml@v9
6767
secrets:
6868
PSGALLERY_API_KEY: ${{ secrets.PSGALLERY_API_KEY }}
6969
GitHubAppClientId: ${{ secrets.SHELLY_CLIENT_ID }}

docs/content/get-started/your-first-release.md

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -29,24 +29,26 @@ release with commit-based notes. It has no pull-request labels or body to use as
2929

3030
| Label | Effect |
3131
| --- | --- |
32-
| `major` / `breaking` | Bump `MAJOR`. |
33-
| `minor` / `feature` | Bump `MINOR`. |
34-
| `patch` / `fix` | Bump `PATCH`. This is the default for an unlabeled PR when `AutoPatching` is enabled. |
35-
| `Prerelease` | Publish a prerelease version from the pull request, before it is merged. |
36-
| `NoRelease` | Run the pipeline but skip publication. |
32+
| `release:major` | Bump `MAJOR`. |
33+
| `release:minor` | Bump `MINOR`. |
34+
| `release:patch` | Bump `PATCH`. This is the default for an unlabeled PR when `AutoPatching` is enabled. |
35+
| `release:pre-release` | Publish a prerelease version from the pull request, before it is merged. |
36+
| `release:skip` | Run the pipeline but skip publication. |
3737

38-
Conflicting labels (for example `major` together with `NoRelease`) are rejected and block the merge. The label names are
39-
configurable — see [Settings](../reference/settings.md).
38+
Conflicting labels (for example `release:major` together with `release:skip`) are rejected whenever that run resolves a
39+
release. A prerelease conflict fails the pull-request check; a stable conflict fails the resulting release run. These
40+
are the defaults; every label mapping remains configurable — see [Settings](../reference/settings.md).
4041

4142
For the full model, including prerelease promotion and what a release produces, see
4243
[Versioning and releases](../guides/versioning-and-releases.md).
4344

4445
## Testing before you merge
4546

46-
Add the `Prerelease` label to publish a prerelease version from the open pull request. The prerelease is installable
47-
from the PowerShell Gallery but is not promoted as the latest stable version, so it can be validated before the pull
48-
request is merged. When the pull request is closed without merging, the prerelease versions and tags created for it are
49-
cleaned up automatically.
47+
With the default `AutoPatching: true`, add `release:pre-release` to publish a patch prerelease from the open pull
48+
request. When AutoPatching is disabled, also apply one configured bump label. The prerelease is installable from the
49+
PowerShell Gallery but is not promoted as the latest stable version, so it can be validated before the pull request is
50+
merged. When the pull request is closed without merging, the prerelease versions and tags created for it are cleaned up
51+
automatically.
5052

5153
## When nothing is released
5254

docs/content/guides/calling-the-workflow.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ permissions:
4646

4747
jobs:
4848
Process-PSModule:
49-
uses: PSModule/Process-PSModule/.github/workflows/workflow.yml@v8
49+
uses: PSModule/Process-PSModule/.github/workflows/workflow.yml@v9
5050
secrets:
5151
PSGALLERY_API_KEY: ${{ secrets.PSGALLERY_API_KEY }}
5252
GitHubAppClientId: ${{ secrets.SHELLY_CLIENT_ID }}
@@ -92,7 +92,7 @@ changes:
9292
```yaml
9393
jobs:
9494
Process-PSModule:
95-
uses: PSModule/Process-PSModule/.github/workflows/workflow.yml@v8
95+
uses: PSModule/Process-PSModule/.github/workflows/workflow.yml@v9
9696
secrets:
9797
PSGALLERY_API_KEY: ${{ secrets.PSGALLERY_API_KEY }}
9898
GitHubAppClientId: ${{ secrets.SHELLY_CLIENT_ID }}
@@ -121,7 +121,7 @@ content lines stay at the same indentation level:
121121
```yaml
122122
jobs:
123123
Process-PSModule:
124-
uses: PSModule/Process-PSModule/.github/workflows/workflow.yml@v8
124+
uses: PSModule/Process-PSModule/.github/workflows/workflow.yml@v9
125125
secrets:
126126
PSGALLERY_API_KEY: ${{ secrets.PSGALLERY_API_KEY }}
127127
GitHubAppClientId: ${{ secrets.SHELLY_CLIENT_ID }}
@@ -233,7 +233,7 @@ You can also pass patterns via the workflow input:
233233
```yaml
234234
jobs:
235235
Process:
236-
uses: PSModule/Process-PSModule/.github/workflows/workflow.yml@v8
236+
uses: PSModule/Process-PSModule/.github/workflows/workflow.yml@v9
237237
with:
238238
ImportantFilePatterns: |
239239
^src/
@@ -246,7 +246,7 @@ To disable triggering via the workflow input, pass an explicit empty string:
246246
```yaml
247247
jobs:
248248
process:
249-
uses: PSModule/Process-PSModule/.github/workflows/workflow.yml@v8
249+
uses: PSModule/Process-PSModule/.github/workflows/workflow.yml@v9
250250
with:
251251
ImportantFilePatterns: ''
252252
```

docs/content/guides/github-app-authentication.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ names. Map the caller's secrets explicitly:
2323
```yaml
2424
jobs:
2525
Process-PSModule:
26-
uses: PSModule/Process-PSModule/.github/workflows/workflow.yml@v8
26+
uses: PSModule/Process-PSModule/.github/workflows/workflow.yml@v9
2727
secrets:
2828
PSGALLERY_API_KEY: ${{ secrets.PSGALLERY_API_KEY }}
2929
GitHubAppClientId: ${{ secrets.SHELLY_CLIENT_ID }}

docs/content/guides/versioning-and-releases.md

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ description: How Process-PSModule resolves a version from pull-request labels, p
66
# Versioning and releases
77

88
Process-PSModule orchestrates the module lifecycle through GitHub Actions. Version progression is label-driven in pull
9-
requests and resolved once, in the Plan stage, before anything is built. Stable publication occurs only from a push to
10-
the configured default branch.
9+
requests and resolved once, in the Plan stage, before anything is built. Stable publication occurs from a push or
10+
manual dispatch on the configured default branch.
1111

1212
## Flow
1313

@@ -29,18 +29,20 @@ The bump comes from the pull-request label; the next version is computed as `cur
2929

3030
| Label | Effect |
3131
| --- | --- |
32-
| `major` / `breaking` | Breaking change; bump `MAJOR`. |
33-
| `minor` / `feature` | New feature; bump `MINOR`. |
34-
| `patch` / `fix` | Bugfix; bump `PATCH`. |
35-
| `Prerelease` | Publish as a prerelease; not promoted to latest. |
36-
| `NoRelease` | Run the pipeline, skip publication. |
37-
38-
Multiple or conflicting version labels (for example `major` together with `NoRelease`) are rejected and block the merge.
32+
| `release:major` | Breaking change; bump `MAJOR`. |
33+
| `release:minor` | New feature; bump `MINOR`. |
34+
| `release:patch` | Bugfix; bump `PATCH`. |
35+
| `release:pre-release` | Publish as a prerelease; not promoted to latest. |
36+
| `release:skip` | Run the pipeline, skip publication. |
37+
38+
Multiple or conflicting version labels (for example `release:major` together with `release:skip`) are rejected whenever
39+
a release is resolved. A prerelease conflict fails the pull-request check; a stable conflict fails the resulting
40+
default-branch release run.
3941
With `AutoPatching: true`, an unlabeled pull request defaults to `Patch`; otherwise it needs an explicit version label.
4042
Direct pushes and manual dispatches on the default branch always use `Patch`, regardless of `AutoPatching`.
4143

42-
The label names are configurable through `Publish.Module.MajorLabels`, `MinorLabels`, `PatchLabels`, and
43-
`IgnoreLabels` — see [Settings](../reference/settings.md).
44+
These are default names. They remain configurable through `Publish.Module.MajorLabels`, `MinorLabels`, `PatchLabels`,
45+
`PrereleaseLabels`, and `IgnoreLabels` — see [Settings](../reference/settings.md).
4446

4547
## Branch types
4648

@@ -54,9 +56,10 @@ Exactly one branch is authorized to publish stable releases, so consumers always
5456

5557
## Prereleases
5658

57-
A pull request labelled `Prerelease` publishes a prerelease version (for example `v1.2.3-pr.1.5`) that is installable
58-
but not promoted as latest. When that pull request is merged with a version label, the stable version is computed from
59-
the label and the current version on the release branch.
59+
With `AutoPatching: true`, a pull request labeled with the default `release:pre-release` name publishes a patch
60+
prerelease version (for example `v1.2.3-pr.1.5`) that is installable but not promoted as latest. When AutoPatching is
61+
disabled, the pull request also needs one configured bump label. When that pull request is merged with a version label,
62+
the stable version is computed from the label and the current version on the release branch.
6063

6164
When a pull request closes, the prerelease versions and tags created for it are removed, so abandoned or promoted work
6265
leaves no orphaned prereleases. This is controlled by `Publish.Module.AutoCleanup`.

docs/content/reference/powershell-module-standard.md

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -117,8 +117,8 @@ versions — security fixes go on the current tip of `main` only.
117117

118118
### Release and feature branches
119119

120-
For large work, open a release branch and target it from feature branches. Apply the `Prerelease` label on the release
121-
branch PR to publish preview versions before its final merge creates the stable default-branch push.
120+
For large work, open a release branch and target it from feature branches. Apply the default `release:pre-release` label
121+
on the release branch PR to publish preview versions before its final merge creates the stable default-branch push.
122122

123123
## CI/CD pipeline
124124

@@ -200,13 +200,18 @@ The **Plan** job resolves the next version before any build occurs. This means t
200200

201201
| Labels (configurable) | Bump type | Default label values |
202202
| --------------------- | --------- | -------------------- |
203-
| Major | Major (`X.0.0`) | `major`, `breaking` |
204-
| Minor | Minor (`x.Y.0`) | `minor`, `feature` |
205-
| Patch | Patch (`x.y.Z`) | `patch`, `fix` |
206-
| Ignore | No release | `NoRelease` |
203+
| Major | Major (`X.0.0`) | `release:major` |
204+
| Minor | Minor (`x.Y.0`) | `release:minor` |
205+
| Patch | Patch (`x.y.Z`) | `release:patch` |
206+
| Ignore | No release | `release:skip` |
207207
| None of the above | Patch (when `AutoPatching: true`) | — |
208208

209-
**Prerelease versions:** Adding a `Prerelease` label to the PR produces a prerelease tag (e.g., `1.2.3-preview0001`). The format is controlled by `IncrementalPrerelease` (sequential numbering) or `DatePrereleaseFormat` (.NET DateTime format string).
209+
**Prerelease versions:** With `AutoPatching: true`, adding the default `release:pre-release` label to the PR produces a
210+
patch prerelease tag (e.g., `1.2.3-preview0001`). When AutoPatching is disabled, also apply one configured bump label.
211+
The format is controlled by `IncrementalPrerelease` (sequential numbering) or `DatePrereleaseFormat` (.NET DateTime
212+
format string).
213+
214+
All five label mappings remain configurable in `.github/PSModule.yml`.
210215

211216
An important direct default-branch push and a default-branch manual dispatch always resolve to `Patch`, regardless of
212217
`AutoPatching`. A push that exactly matches a merged pull request uses that PR's version label instead.
@@ -263,10 +268,11 @@ Publish:
263268
IncrementalPrerelease: true # Sequential prerelease numbering
264269
DatePrereleaseFormat: '' # Alternative: .NET DateTime format for prerelease
265270
VersionPrefix: 'v' # Git tag prefix
266-
MajorLabels: 'major, breaking'
267-
MinorLabels: 'minor, feature'
268-
PatchLabels: 'patch, fix'
269-
IgnoreLabels: 'NoRelease'
271+
MajorLabels: 'release:major'
272+
MinorLabels: 'release:minor'
273+
PatchLabels: 'release:patch'
274+
IgnoreLabels: 'release:skip'
275+
PrereleaseLabels: 'release:pre-release'
270276
UsePRTitleAsReleaseName: false
271277
UsePRBodyAsReleaseNotes: true
272278
UsePRTitleAsNotesHeading: true
@@ -291,7 +297,7 @@ The publish step only runs when:
291297

292298
- All tests and code coverage pass (or are skipped)
293299
- An important push reaches the default branch (stable release), or
294-
- The PR carries the `Prerelease` label (prerelease from the feature/release branch)
300+
- The PR carries the configured prerelease label and resolves a bump
295301

296302
On any closed PR, the pipeline cleans up any prerelease tags created for that branch. A closed pull request cannot
297303
create a stable release.

docs/content/reference/repository-standard.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -376,8 +376,9 @@ Module repositories use the Process-PSModule workflow. Version and release behav
376376

377377
Default expectations:
378378

379-
- `Major`, `Minor`, `Patch`, and `Prerelease` labels determine release behavior.
380-
- Documentation-only README standardization PRs use the `Docs`/`NoRelease` behavior when available.
379+
- `release:major`, `release:minor`, `release:patch`, and `release:pre-release` are the default release labels.
380+
- Documentation-only README standardization PRs use the default `release:skip` behavior when available.
381+
- Module repositories may override these defaults through `.github/PSModule.yml`.
381382
- Source changes under `src/` are module-impacting and should trigger the full module workflow.
382383
- README and documentation changes should update the site without pretending to be module API changes.
383384

docs/content/reference/scenario-matrix.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ execution; other pages link here rather than repeating it.
2828

2929
- \* Only when `Publish.Site.Skip` is `false`.
3030
- † Requires an important change and all required build, test, and coverage gates to succeed. An open PR also requires
31-
the `Prerelease` label. A default-branch push uses labels and notes only when its SHA exactly matches a merged pull
31+
the configured prerelease label (`release:pre-release` by default) and a resolved bump. A default-branch push uses labels and notes only when its SHA exactly matches a merged pull
3232
request; otherwise it releases a Patch version with commit-based notes. A default-branch manual run is also a Patch
3333
release with commit-based notes.
3434
- ‡ Cleans up prerelease versions and tags for the closed pull request when `Publish.Module.AutoCleanup` is enabled;

docs/content/reference/settings.md

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -65,10 +65,11 @@ For worked examples, see [Configuring the pipeline](../guides/configuring-the-pi
6565
| `Publish.Module.IncrementalPrerelease` | `Boolean` | Use incremental prerelease versioning | `true` |
6666
| `Publish.Module.DatePrereleaseFormat` | `String` | Format for date-based prerelease (uses [.NET DateTime format strings](https://learn.microsoft.com/dotnet/standard/base-types/standard-date-and-time-format-strings)) | `''` |
6767
| `Publish.Module.VersionPrefix` | `String` | Prefix for version tags | `'v'` |
68-
| `Publish.Module.MajorLabels` | `String` | Labels indicating a major version bump | `'major, breaking'` |
69-
| `Publish.Module.MinorLabels` | `String` | Labels indicating a minor version bump | `'minor, feature'` |
70-
| `Publish.Module.PatchLabels` | `String` | Labels indicating a patch version bump | `'patch, fix'` |
71-
| `Publish.Module.IgnoreLabels` | `String` | Labels indicating no release | `'NoRelease'` |
68+
| `Publish.Module.MajorLabels` | `String` | Labels indicating a major version bump | `'release:major'` |
69+
| `Publish.Module.MinorLabels` | `String` | Labels indicating a minor version bump | `'release:minor'` |
70+
| `Publish.Module.PatchLabels` | `String` | Labels indicating a patch version bump | `'release:patch'` |
71+
| `Publish.Module.IgnoreLabels` | `String` | Labels indicating no release | `'release:skip'` |
72+
| `Publish.Module.PrereleaseLabels` | `String` | Labels indicating a prerelease | `'release:pre-release'` |
7273
| `Publish.Module.UsePRTitleAsReleaseName` | `Boolean` | Use the PR title as the GitHub release name instead of version string | `false` |
7374
| `Publish.Module.UsePRBodyAsReleaseNotes` | `Boolean` | Use the PR body as the release notes content | `true` |
7475
| `Publish.Module.UsePRTitleAsNotesHeading` | `Boolean` | Prepend PR title as H1 heading with PR number link before the body | `true` |
@@ -147,10 +148,11 @@ Publish:
147148
IncrementalPrerelease: true
148149
DatePrereleaseFormat: ''
149150
VersionPrefix: 'v'
150-
MajorLabels: 'major, breaking'
151-
MinorLabels: 'minor, feature'
152-
PatchLabels: 'patch, fix'
153-
IgnoreLabels: 'NoRelease'
151+
MajorLabels: 'release:major'
152+
MinorLabels: 'release:minor'
153+
PatchLabels: 'release:patch'
154+
IgnoreLabels: 'release:skip'
155+
PrereleaseLabels: 'release:pre-release'
154156
UsePRTitleAsReleaseName: false
155157
UsePRBodyAsReleaseNotes: true
156158
UsePRTitleAsNotesHeading: true

0 commit comments

Comments
 (0)