Skip to content

Modify psscriptanalyzer.yml to only scan changed .powershell files to… #12

Modify psscriptanalyzer.yml to only scan changed .powershell files to…

Modify psscriptanalyzer.yml to only scan changed .powershell files to… #12

name: PSScriptAnalyzer
on:
pull_request:
paths:
- "**.ps1"
- "**.psm1"
- "**.psd1"
push:
branches:
- main
- development
- "feature/144-implement-dual-validation-psscriptanalyzer-with-standardized-settings"
paths:
- "**.ps1"
- "**.psm1"
- "**.psd1"
jobs:
analyze:
name: PSScriptAnalyzer
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Debug Environment
shell: pwsh
run: |
Write-Host "Current location: $(Get-Location)"
Write-Host "GITHUB_WORKSPACE: $env:GITHUB_WORKSPACE"
Write-Host "Directory contents:"
Get-ChildItem -Path $env:GITHUB_WORKSPACE -Recurse | Select-Object FullName | Format-Table -AutoSize
- name: Install PSScriptAnalyzer
shell: pwsh
run: |
Set-PSRepository PSGallery -InstallationPolicy Trusted
Install-Module PSScriptAnalyzer -Force
- name: Run PSScriptAnalyzer
shell: pwsh
run: |
# Debug Paths
Write-Host "Looking for settings file..."
$settingsPath = Join-Path $env:GITHUB_WORKSPACE '.github/psscriptanalyzer/PSScriptAnalyzerSettings.psd1'
Write-Host "Settings path: $settingsPath"
# Check .github folder
$githubPath = Join-Path $env:GITHUB_WORKSPACE '.github'
Write-Host "`n.github folder contents:"
Get-ChildItem -Path $githubPath -Recurse | Select-Object FullName
if (-not (Test-Path $settingsPath)) {
Write-Error "PSScriptAnalyzer settings file not found at: $settingsPath"
exit 1
}
Write-Host "`nFound settings file. Contents:"
Get-Content $settingsPath
$results = @()
Write-Host "`nStarting analysis..."
# Analyze all PowerShell files
Get-ChildItem -Path $env:GITHUB_WORKSPACE -Recurse -Include *.ps1,*.psm1,*.psd1 |
ForEach-Object {
Write-Host "Analyzing $($_.FullName)"
$analysis = Invoke-ScriptAnalyzer -Path $_.FullName -Settings $settingsPath
if ($analysis) {
$results += $analysis
}
}
if ($results) {
$resultPath = Join-Path $env:GITHUB_WORKSPACE "psscriptanalyzer-results.txt"
$results | Format-Table -AutoSize | Out-File -FilePath $resultPath
$results | Format-Table -AutoSize
Write-Output "::error::PSScriptAnalyzer found $($results.Count) issues"
exit 1
} else {
Write-Output "No PSScriptAnalyzer issues found"
}
- name: Upload PSScriptAnalyzer Results
if: failure()
uses: actions/upload-artifact@v4
with:
name: psscriptanalyzer-results
path: psscriptanalyzer-results.txt
if-no-files-found: warn