Skip to content

Publish Module

Publish Module #21

Workflow file for this run

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