-
Notifications
You must be signed in to change notification settings - Fork 0
Description
Describe the change
Update the Process-PSModule workflow to use the pull request title and description as release notes, with configurable settings similar to PSModule/Auto-Release.
Current Behavior
The workflow currently uses GitHub's auto-generated release notes when publishing modules.
Desired Behavior
- Use the PR title as the release notes header
- Use the PR description as the content following the header
- Make this behavior configurable via
.github/PSModule. ymlsettings file
Proposed Configuration Settings
Add these settings to the Publish. Module section in .github/PSModule.yml:
Publish:
Module:
UsePRTitleAsReleaseName: false # Use PR title as the release name
UsePRBodyAsReleaseNotes: true # Use PR body as release notes content
UsePRTitleAsNotesHeading: true # Add PR title as H1 heading before bodyReference Implementation (PSModule/Auto-Release)
The Auto-Release repository already implements this pattern:
Configuration loading (main.ps1#L48-L51):
$usePRBodyAsReleaseNotes = ![string]::IsNullOrEmpty($configuration.UsePRBodyAsReleaseNotes) ? $configuration.UsePRBodyAsReleaseNotes -eq 'true' : $env: PSMODULE_AUTO_RELEASE_INPUT_UsePRBodyAsReleaseNotes -eq 'true'
$usePRTitleAsReleaseName = ![string]::IsNullOrEmpty($configuration.UsePRTitleAsReleaseName) ? $configuration.UsePRTitleAsReleaseName -eq 'true' : $env: PSMODULE_AUTO_RELEASE_INPUT_UsePRTitleAsReleaseName -eq 'true'
$usePRTitleAsNotesHeading = ![string]::IsNullOrEmpty($configuration.UsePRTitleAsNotesHeading) ? $configuration.UsePRTitleAsNotesHeading -eq 'true' : $env:PSMODULE_AUTO_RELEASE_INPUT_UsePRTitleAsNotesHeading -eq 'true'Release creation logic (main.ps1#L223-L279):
if ($usePRTitleAsReleaseName) {
$prTitle = $pull_request.title
$releaseCreateCommand += @('--title', "$prTitle")
}
$notes = ''
if ($usePRTitleAsNotesHeading) {
$prTitle = $pull_request.title
$prNumber = $pull_request.number
$notes += "# $prTitle (#$prNumber)`n`n"
}
if ($usePRBodyAsReleaseNotes) {
$prBody = $pull_request.body
$notes += $prBody
}
if (-not [string]::IsNullOrWhiteSpace($notes)) {
$releaseCreateCommand += @('--notes', $notes)
} else {
$releaseCreateCommand += '--generate-notes'
}Implementation Steps
-
Check PSModule/Publish-PSModule action: Verify if the action at
.github/workflows/Publish-Module.ymlalready supports these parameters (it usesPSModule/Publish-PSModule@6c25d139fe51b890f75c057897bd58ac344b192a) -
Update settings schema: Add the three new settings to the configuration documentation in README.md under the
Publish. Modulesection -
Pass settings to action: Update
.github/workflows/Publish-Module.ymlto pass these settings:UsePRTitleAsReleaseName: ${{ fromJson(inputs.Settings).Publish.Module.UsePRTitleAsReleaseName }} UsePRBodyAsReleaseNotes: ${{ fromJson(inputs.Settings).Publish.Module.UsePRBodyAsReleaseNotes }} UsePRTitleAsNotesHeading: ${{ fromJson(inputs. Settings).Publish.Module.UsePRTitleAsNotesHeading }}
-
Set default values: Ensure backwards compatibility by setting sensible defaults (following Auto-Release defaults)
-
Update documentation: Add examples to README.md showing how to configure these settings
Benefits
- Consistent release note generation across PSModule repositories
- More meaningful release notes from PR content
- Maintains compatibility with Auto-Release configuration patterns
- Backwards compatible (current behavior unchanged unless configured)