From 8ec790ebeae468136e20981b00a0da938ceaecb0 Mon Sep 17 00:00:00 2001 From: Chris Blyth Date: Tue, 1 Aug 2023 15:03:53 +0100 Subject: [PATCH] Use json output from kube-linter to format into a table to display --- src/Scripts/kubernetesHelper.ps1 | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/src/Scripts/kubernetesHelper.ps1 b/src/Scripts/kubernetesHelper.ps1 index ed9688d3..ff937697 100644 --- a/src/Scripts/kubernetesHelper.ps1 +++ b/src/Scripts/kubernetesHelper.ps1 @@ -123,26 +123,33 @@ function ValidateK8sYaml([string]$yamlFile, [string]$kubernetesConfigFile) $ErrorActionPreference = "SilentlyContinue" if(Test-Path $KubeLinterConfigYamlFile) { - $kubeLinterOutput = & $KubeLinterExe lint $yamlFile --fail-if-no-objects-found --fail-on-invalid-resource --config $KubeLinterConfigYamlFile 2>&1 + $kubeLinterOutput = & $KubeLinterExe lint $yamlFile --fail-if-no-objects-found --fail-on-invalid-resource --format json --config $KubeLinterConfigYamlFile 2>&1 } else { - $kubeLinterOutput = & $KubeLinterExe lint $yamlFile --fail-if-no-objects-found --fail-on-invalid-resource 2>&1 + $kubeLinterOutput = & $KubeLinterExe lint $yamlFile --fail-if-no-objects-found --fail-on-invalid-resource --format json 2>&1 } $ErrorActionPreference = $ErrorActionPreferenceOrig - if ($LASTEXITCODE -ne 0) + $kubeLinterData = ConvertFrom-Json $kubeLinterOutput + + if ($LASTEXITCODE -ne 0 -or $kubeLinterData.Summary.ChecksStatus -eq "Failed") { - $KubeLinterFailureMessage = @() $FailureCount = 0 - $kubeLinterOutput | Where-Object { - $_.StartsWith($yamlFile) - } | ForEach-Object { - $formattedLine = $_.Substring($yamlFile.Length + 2) - $KubeLinterFailureMessage += "* $formattedLine" + $ErrorTable = @() + $kubeLinterData.Reports | ForEach-Object { + $ErrorTable += [PSCustomObject] @{ + Name = $_.Object.K8sObject.Name + Check = $_.Check + Message = $_.Diagnostic.Message + Remediation = $_.Remediation + Docs = "https://docs.kubelinter.io/#/generated/checks?id=$($_.Check)" + } $FailureCount++ } - $KubeLinterFailureMessage += "$FailureCount Errors for yaml file $yamlFile (kube-linter)" + $ErrorTable | Format-Table + + $KubeLinterFailureMessage = "$FailureCount Errors for yaml file $yamlFile (kube-linter)" if($KubeLinterFailureMode -eq "LOG") { $KubeLinterFailureMessage | Write-Host