ci(validation): improve output for readability, use lighter image

This commit is contained in:
Sam Chau
2025-08-27 05:31:55 +09:30
parent 492dbe8530
commit dd6904f391
2 changed files with 18 additions and 35 deletions

View File

@@ -18,14 +18,10 @@ on:
jobs: jobs:
validate: validate:
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: mcr.microsoft.com/powershell:lts-alpine-3.18
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Setup PowerShell
run: |
sudo apt-get update
sudo apt-get install -y powershell
- name: validate - name: validate
run: pwsh scripts/validateAllPatterns.ps1 run: pwsh scripts/validateAllPatterns.ps1

View File

@@ -29,13 +29,8 @@ if ($patternFiles.Count -eq 0) {
exit 1 exit 1
} }
Write-Log -Level "INFO" -Message "Found $($patternFiles.Count) pattern files to validate"
# Validate patterns sequentially # Validate patterns sequentially
$failedPatterns = @() $failedPatterns = @()
$completed = 0
$totalFiles = $patternFiles.Count
$lastPercentLogged = 0
foreach ($file in $patternFiles) { foreach ($file in $patternFiles) {
try { try {
@@ -53,36 +48,28 @@ foreach ($file in $patternFiles) {
} }
catch { catch {
$failedPatterns += @{ $failedPatterns += @{
File = $file.FullName File = $file.BaseName
Error = $_.ToString() Error = $_.Exception.Message
Pattern = $pattern
} }
} }
$completed++
# Log progress every 10%
$percentComplete = [math]::Floor(($completed / $totalFiles) * 10) * 10
if ($percentComplete -gt $lastPercentLogged) {
Write-Log -Level "INFO" -Message "$percentComplete% complete ($completed/$totalFiles files)"
$lastPercentLogged = $percentComplete
}
} }
# Log errors # Log errors
foreach ($failure in $failedPatterns) {
Write-Log -Level "ERROR" -Message "$($failure.File): $($failure.Error)"
if ($Verbose) {
Write-Log -Level "ERROR" -Message "Pattern was: $($failure.Pattern)"
}
}
# Summary
if ($failedPatterns.Count -gt 0) { if ($failedPatterns.Count -gt 0) {
Write-Log -Level "ERROR" -Message "$($failedPatterns.Count) pattern(s) failed validation" Write-Host "ERRORS:"
# Find max name length for padding
$maxNameLength = ($failedPatterns | ForEach-Object { $_.File.Length } | Measure-Object -Maximum).Maximum
foreach ($failure in $failedPatterns) {
# Extract just the core error
$errorMsg = $failure.Error
if ($errorMsg -match "at offset (\d+)\. (.+?)\.?`"") {
$errorMsg = "offset $($matches[1]): $($matches[2])"
}
$paddedName = $failure.File.PadRight($maxNameLength)
Write-Host " $paddedName | $errorMsg"
}
exit 1 exit 1
}
else {
Write-Log -Level "SUCCESS" -Message "All $($patternFiles.Count) patterns validated successfully"
exit 0
} }