Skip to content

Build and Publish to PSGallery #35

Build and Publish to PSGallery

Build and Publish to PSGallery #35

Workflow file for this run

name: Build and Publish to PSGallery
on:
push:
branches: [ main ]
paths:
- 'Public/**'
- 'Private/**'
- 'Build/**'
- 'Stepper.psm1'
- 'Stepper.psd1'
- 'LICENSE'
workflow_dispatch: # Allow manual trigger
jobs:
build-and-publish:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install required PowerShell modules
shell: pwsh
run: |
Write-Host "Installing required modules..." -ForegroundColor Cyan
Install-Module -Name Pester -AllowClobber -Scope CurrentUser -SkipPublisherCheck -Force
Install-Module -Name PSScriptAnalyzer -AllowClobber -Scope CurrentUser -Force
Install-Module -Name PSPublishModule -AllowClobber -MaximumVersion 2.0.27 -Scope CurrentUser -Force
Write-Host "Modules installed successfully" -ForegroundColor Green
- name: Run Pester tests
shell: pwsh
run: |
Write-Host "Running Pester tests..." -ForegroundColor Cyan
$testResults = Invoke-Pester -Path ./Tests/ -PassThru -CI -Output Detailed
Write-Host "Tests completed: $($testResults.PassedCount) passed, $($testResults.FailedCount) failed" -ForegroundColor Cyan
if ($testResults.FailedCount -gt 0) {
Write-Host "Tests failed! Build aborted." -ForegroundColor Red
exit 1
}
Write-Host "All tests passed!" -ForegroundColor Green
- name: Build and Publish to PowerShell Gallery
shell: pwsh
env:
PSGALLERY_API_KEY: ${{ secrets.PSGALLERY_API_KEY }}
run: |
Write-Host "Building and publishing Stepper module..." -ForegroundColor Cyan
./Build/Build-Module.ps1 -PublishToPSGallery -PSGalleryAPIKey $env:PSGALLERY_API_KEY
Write-Host "Published successfully" -ForegroundColor Green
- name: Get module version
id: version
shell: pwsh
run: |
$manifest = Import-PowerShellDataFile ./Stepper.psd1
$version = $manifest.ModuleVersion
echo "version=$version" >> $env:GITHUB_OUTPUT
Write-Host "Module version: $version" -ForegroundColor Green