@@ -94,6 +94,7 @@ extends:
9494 stages :
9595 - stage : build
9696 displayName : Build
97+ continueOnError : true
9798 jobs :
9899 - template : /eng/common/templates-official/jobs/jobs.yml@self
99100 parameters :
@@ -470,3 +471,78 @@ extends:
470471 HelixAccessToken : $(_HelixAccessToken)
471472 SYSTEM_ACCESSTOKEN : $(System.AccessToken)
472473 DotNetBuildsInternalReadSasToken : $(dotnetbuilds-internal-container-read-token)
474+ - stage : validate
475+ displayName : Validate
476+ dependsOn : build
477+ condition : always()
478+ jobs :
479+ - job : Validate_Job_Results
480+ displayName : Validate Job Results
481+ dependsOn :
482+ - Windows
483+ - macOS
484+ - Linux
485+ - Linux_Cosmos
486+ - Helix_Windows
487+ - Helix_macOS_x64
488+ - Helix_macOS_ARM64
489+ - Helix_Ubuntu_SqlServer
490+ - Helix_Ubuntu_Cosmos
491+ - Helix_Ubuntu
492+ condition : always()
493+ pool :
494+ name : $(DncEngInternalBuildPool)
495+ demands : ImageOverride -equals 1es-windows-2022
496+ os : windows
497+ variables :
498+ WindowsResult : $[ dependencies.Windows.result ]
499+ HelixWindowsResult : $[ dependencies.Helix_Windows.result ]
500+ LinuxResult : $[ dependencies.Linux.result ]
501+ HelixUbuntuResult : $[ dependencies.Helix_Ubuntu.result ]
502+ HelixUbuntuSqlServerResult : $[ dependencies.Helix_Ubuntu_SqlServer.result ]
503+ MacOsResult : $[ dependencies.macOS.result ]
504+ HelixMacOsX64Result : $[ dependencies.Helix_macOS_x64.result ]
505+ HelixMacOsArm64Result : $[ dependencies.Helix_macOS_ARM64.result ]
506+ LinuxCosmosResult : $[ dependencies.Linux_Cosmos.result ]
507+ HelixUbuntuCosmosResult : $[ dependencies.Helix_Ubuntu_Cosmos.result ]
508+ steps :
509+ - pwsh : |
510+ $groupResults = @{
511+ Windows = @("$(WindowsResult)", "$(HelixWindowsResult)")
512+ Linux = @("$(LinuxResult)", "$(HelixUbuntuResult)", "$(HelixUbuntuSqlServerResult)")
513+ MacOS = @("$(MacOsResult)", "$(HelixMacOsX64Result)", "$(HelixMacOsArm64Result)")
514+ Cosmos = @("$(LinuxCosmosResult)", "$(HelixUbuntuCosmosResult)")
515+ }
516+
517+ $failedGroups = @()
518+
519+ foreach ($groupName in $groupResults.Keys)
520+ {
521+ $results = $groupResults[$groupName]
522+ Write-Host "$groupName results: $($results -join ', ')"
523+
524+ # Ignore jobs that were skipped (e.g. condition-gated)
525+ $ran = $results | Where-Object { $_ -ne 'Skipped' }
526+ if (-not $ran)
527+ {
528+ Write-Host " -> all jobs skipped, treating group as successful"
529+ continue
530+ }
531+
532+ $hasSuccess = $ran | Where-Object { $_ -eq 'Succeeded' }
533+ if ($hasSuccess)
534+ {
535+ continue
536+ }
537+
538+ $failedGroups += $groupName
539+ }
540+
541+ if ($failedGroups.Count -gt 0)
542+ {
543+ Write-Error "All jobs failed for group(s): $($failedGroups -join ', ')."
544+ exit 1
545+ }
546+
547+ Write-Host 'Group validation passed.'
548+ displayName: Evaluate grouped job outcomes
0 commit comments