Tasks/TestReleaseReadiness.ps1
|
<# .SYNOPSIS Validates that the current module is ready to tag for release. .DESCRIPTION Checks that the worktree is clean, the release tag does not already exist, the changelog contains the manifest version, and the manifest version is greater than existing semantic release tags. #> if ($script:_loadedPlumberReleaseTestReleaseReadiness) { return } $script:_loadedPlumberReleaseTestReleaseReadiness = $true Add-BuildTask -Name TestReleaseReadiness -Jobs SetReleaseState, { $config = $script:PlumberReleaseConfig $state = $script:PlumberReleaseState if (-not $state.VersionInfo) { Write-Error "ModuleVersion '$($state.Version)' is not a semantic version." return } $dirty = git -C $config.ModuleRoot status --porcelain if ($dirty) { Write-Error 'Working tree must be clean before creating a release tag.' return } if ($state.ExistingLocalTag -or $state.ExistingRemoteTag) { Write-Error "Release tag already exists: $($state.TagName)" return } if ($state.LatestTagVersion -and $state.VersionInfo -le $state.LatestTagVersion) { Write-Error ( "ModuleVersion $($state.VersionInfo) must be greater than " + "latest release tag $($state.LatestTagVersion)." ) return } Get-PlumberReleaseNote -Config $config -Version $state.Version | Out-Null Write-Build Green "Release is ready: $($state.TagName)" } |