Publish Module #21
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Publish Module | |
| on: | |
| push: | |
| branches: [master] | |
| workflow_dispatch: | |
| jobs: | |
| build: | |
| runs-on: windows-latest | |
| steps: | |
| - uses: actions/checkout@v2 | |
| - name: ⚡ ModuleFast with Specification | |
| uses: JustinGrote/ModuleFast-action@v0.0.1 | |
| with: | |
| specification: | | |
| BuildHelpers | |
| PowerShellBuild | |
| psake | |
| PSScriptAnalyzer | |
| platyPS | |
| - shell: pwsh | |
| # Give an id to the step, so we can reference it later | |
| id: check_if_versions_bumped | |
| run: | | |
| function Compare-SemanticVersion { | |
| param( | |
| [string]$Version1, | |
| [string]$Version2 | |
| ) | |
| # Parse semantic versions (handles prerelease like 2.0.0-beta1) | |
| $v1Parts = $Version1 -split '-' | |
| $v1Version = [version]$v1Parts[0] | |
| $v1Prerelease = if ($v1Parts.Count -gt 1) { $v1Parts[1] } else { $null } | |
| $v2Parts = $Version2 -split '-' | |
| $v2Version = [version]$v2Parts[0] | |
| $v2Prerelease = if ($v2Parts.Count -gt 1) { $v2Parts[1] } else { $null } | |
| # Compare core versions first | |
| if ($v1Version -gt $v2Version) { | |
| return 1 | |
| } elseif ($v1Version -lt $v2Version) { | |
| return -1 | |
| } | |
| # Same core version, compare prerelease | |
| if ($null -eq $v1Prerelease -and $null -eq $v2Prerelease) { | |
| return 0 # Both are release versions and equal | |
| } elseif ($null -eq $v1Prerelease) { | |
| return 1 # v1 is release, v2 is prerelease (release > prerelease) | |
| } elseif ($null -eq $v2Prerelease) { | |
| return -1 # v2 is release, v1 is prerelease (prerelease < release) | |
| } | |
| # Both are prerelease, compare lexicographically | |
| if ($v1Prerelease -gt $v2Prerelease) { | |
| return 1 | |
| } elseif ($v1Prerelease -lt $v2Prerelease) { | |
| return -1 | |
| } | |
| return 0 | |
| } | |
| $GalleryVersion = Get-NextNugetPackageVersion -Name Plaster -ErrorAction Stop | |
| $GithubVersion = Get-MetaData -Path ./Plaster/Plaster.psd1 -PropertyName ModuleVersion -ErrorAction Stop | |
| $comparison = Compare-SemanticVersion -Version1 $GithubVersion -Version2 $GalleryVersion | |
| $bumped = $comparison -ge 0 | |
| # Set the output named "version_bumped" | |
| Write-Host "::set-output name=version_bumped::$bumped" | |
| # Only publish (from master) if versions | |
| - name: Build and publish | |
| if: steps.check_if_versions_bumped.outputs.version_bumped == 'True' | |
| env: | |
| PSGALLERY_API_KEY: ${{ secrets.GALLERY_KEY }} | |
| shell: pwsh | |
| run: | | |
| ./build.ps1 -Task Publish |