Skip to content

Commit 68919b7

Browse files
Add ReleaseType input for explicit release control
1 parent ebbfeec commit 68919b7

2 files changed

Lines changed: 16 additions & 23 deletions

File tree

action.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,10 @@ inputs:
4949
description: A comma separated list of labels that do not trigger a release.
5050
required: false
5151
default: NoRelease
52+
ReleaseType:
53+
description: The type of release to create. Values are 'Release' (stable), 'Prerelease', 'Cleanup' (delete old prereleases), or 'None'. When set, this overrides automatic detection.
54+
required: false
55+
default: ''
5256
WhatIf:
5357
description: If specified, the action will only log the changes it would make, but will not actually create or delete any releases or tags.
5458
required: false
@@ -87,6 +91,7 @@ runs:
8791
PSMODULE_PUBLISH_PSMODULE_INPUT_AutoPatching: ${{ inputs.AutoPatching }}
8892
PSMODULE_PUBLISH_PSMODULE_INPUT_DatePrereleaseFormat: ${{ inputs.DatePrereleaseFormat }}
8993
PSMODULE_PUBLISH_PSMODULE_INPUT_IgnoreLabels: ${{ inputs.IgnoreLabels }}
94+
PSMODULE_PUBLISH_PSMODULE_INPUT_ReleaseType: ${{ inputs.ReleaseType }}
9095
PSMODULE_PUBLISH_PSMODULE_INPUT_IncrementalPrerelease: ${{ inputs.IncrementalPrerelease }}
9196
PSMODULE_PUBLISH_PSMODULE_INPUT_MajorLabels: ${{ inputs.MajorLabels }}
9297
PSMODULE_PUBLISH_PSMODULE_INPUT_MinorLabels: ${{ inputs.MinorLabels }}

scripts/helpers/Publish-PSModule.ps1

Lines changed: 11 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
$versionPrefix = $env:PSMODULE_PUBLISH_PSMODULE_INPUT_VersionPrefix
4646
$whatIf = $env:PSMODULE_PUBLISH_PSMODULE_INPUT_WhatIf -eq 'true'
4747
$ignoreLabels = $env:PSMODULE_PUBLISH_PSMODULE_INPUT_IgnoreLabels -split ',' | ForEach-Object { $_.Trim() }
48+
$releaseType = $env:PSMODULE_PUBLISH_PSMODULE_INPUT_ReleaseType # 'Release', 'Prerelease', 'Cleanup', or 'None'
4849
$majorLabels = $env:PSMODULE_PUBLISH_PSMODULE_INPUT_MajorLabels -split ',' | ForEach-Object { $_.Trim() }
4950
$minorLabels = $env:PSMODULE_PUBLISH_PSMODULE_INPUT_MinorLabels -split ',' | ForEach-Object { $_.Trim() }
5051
$patchLabels = $env:PSMODULE_PUBLISH_PSMODULE_INPUT_PatchLabels -split ',' | ForEach-Object { $_.Trim() }
@@ -60,6 +61,7 @@
6061
VersionPrefix = $versionPrefix
6162
WhatIf = $whatIf
6263
IgnoreLabels = $ignoreLabels
64+
ReleaseType = $releaseType
6365
MajorLabels = $majorLabels
6466
MinorLabels = $minorLabels
6567
PatchLabels = $patchLabels
@@ -81,28 +83,11 @@
8183
}
8284

8385
Set-GitHubLogGroup 'Event information - Details' {
84-
$defaultBranchName = (gh repo view --json defaultBranchRef | ConvertFrom-Json | Select-Object -ExpandProperty defaultBranchRef).name
85-
$isPullRequest = $githubEvent.PSObject.Properties.Name -contains 'pull_request'
86-
if (-not ($isPullRequest -or $whatIf)) {
87-
Write-Warning '⚠️ A release should not be created in this context. Exiting.'
88-
exit
89-
}
90-
$actionType = $githubEvent.action
91-
$isMerged = $pull_request.merged -eq 'True'
92-
$prIsClosed = $pull_request.state -eq 'closed'
93-
$prBaseRef = $pull_request.base.ref
9486
$prHeadRef = $pull_request.head.ref
95-
$targetIsDefaultBranch = $pull_request.base.ref -eq $defaultBranchName
9687

9788
Write-Output '-------------------------------------------------'
98-
Write-Output "Default branch: [$defaultBranchName]"
99-
Write-Output "Is a pull request event: [$isPullRequest]"
100-
Write-Output "Action type: [$actionType]"
101-
Write-Output "PR Merged: [$isMerged]"
102-
Write-Output "PR Closed: [$prIsClosed]"
103-
Write-Output "PR Base Ref: [$prBaseRef]"
10489
Write-Output "PR Head Ref: [$prHeadRef]"
105-
Write-Output "Target is default branch: [$targetIsDefaultBranch]"
90+
Write-Output "ReleaseType: [$releaseType]"
10691
Write-Output '-------------------------------------------------'
10792
}
10893

@@ -117,14 +102,16 @@
117102
}
118103

119104
Set-GitHubLogGroup 'Calculate release type' {
120-
$createRelease = $isMerged -and $targetIsDefaultBranch
121-
$closedPullRequest = $prIsClosed -and -not $isMerged
122-
$createPrerelease = $labels -contains 'prerelease' -and -not $createRelease -and -not $closedPullRequest
123105
$prereleaseName = $prHeadRef -replace '[^a-zA-Z0-9]'
124106

107+
# ReleaseType is determined by Get-PSModuleSettings
108+
$createRelease = $releaseType -eq 'Release'
109+
$createPrerelease = $releaseType -eq 'Prerelease'
110+
$closedPullRequest = $releaseType -eq 'Cleanup'
111+
125112
$ignoreRelease = ($labels | Where-Object { $ignoreLabels -contains $_ }).Count -gt 0
126113
if ($ignoreRelease) {
127-
Write-Output 'Ignoring release creation.'
114+
Write-Output 'Ignoring release creation due to ignore label.'
128115
return
129116
}
130117

@@ -135,12 +122,13 @@
135122
).Count -gt 0 -or $autoPatching) -and -not $majorRelease -and -not $minorRelease
136123

137124
Write-Output '-------------------------------------------------'
125+
Write-Output "ReleaseType: [$releaseType]"
138126
Write-Output "Create a release: [$createRelease]"
139127
Write-Output "Create a prerelease: [$createPrerelease]"
140128
Write-Output "Create a major release: [$majorRelease]"
141129
Write-Output "Create a minor release: [$minorRelease]"
142130
Write-Output "Create a patch release: [$patchRelease]"
143-
Write-Output "Closed pull request: [$closedPullRequest]"
131+
Write-Output "Cleanup prereleases: [$closedPullRequest]"
144132
Write-Output '-------------------------------------------------'
145133
}
146134

0 commit comments

Comments
 (0)