infracloud/scripts/auto-organized/get_build_log.ps1

38 lines
1.8 KiB
PowerShell

$p = '19mNqNXIoZ4c3EriFNfzfkgpGNOvLjpOqqZnTFXKnzjxWJ5zURjgJQQJ99CBACAAAAAamI5kAAASAZDOAMPp'
$t = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(':' + $p))
$h = @{ Authorization = 'Basic ' + $t }
$base = 'https://dev.azure.com/CN-Squad/Invista%20FIDC%20-%20Nexus/_apis'
# Buscar os 10 builds mais recentes do projeto (qualquer pipeline, branch devops)
$builds = Invoke-RestMethod -Uri "$base/build/builds?branchName=refs/heads/devops&`$top=10&api-version=7.0" -Headers $h
Write-Host "Builds recentes na branch devops:"
$builds.value | Select-Object id,
@{n='pipeline';e={$_.definition.name}},
@{n='status';e={$_.status}},
@{n='result';e={if($_.result){$_.result}else{'(running)'}}},
@{n='queued';e={$_.queueTime}} |
Format-Table
# Pegar o mais recente do mfe-shell
$shell = $builds.value | Where-Object { $_.definition.name -eq 'mfe-shell' } | Select-Object -First 1
if ($shell) {
$buildId = $shell.id
Write-Host "=== mfe-shell build mais recente: $buildId ==="
if ($shell.validationResults) {
Write-Host "VALIDATION ERRORS:"
$shell.validationResults | ForEach-Object { Write-Host " [$($_.result)] $($_.message)" }
}
$tl = Invoke-RestMethod -Uri "$base/build/builds/$buildId/timeline?api-version=7.0" -Headers $h
if ($tl.records.Count -gt 0) {
$tl.records | Where-Object { $_.result -eq 'failed' } |
Select-Object type, name, result, errorCount | Format-Table
$failedStep = $tl.records | Where-Object { $_.result -eq 'failed' -and $_.type -eq 'Task' } | Select-Object -First 1
if ($failedStep -and $failedStep.log) {
Write-Host "LOG: $($failedStep.name)"
$logContent = Invoke-RestMethod -Uri "$($failedStep.log.url)?api-version=7.0" -Headers $h
$logContent -split "`n" | Select-Object -Last 40 | ForEach-Object { Write-Host $_ }
}
} else {
Write-Host "Timeline vazia."
}
}