param( [Parameter(Mandatory=$true)][string] $SourceRepo, [Parameter(Mandatory=$true)][int] $ChannelId, [Parameter(Mandatory=$true)][string] $MaestroApiAccessToken, [Parameter(Mandatory=$false)][string] $MaestroApiEndPoint = "https://maestro-prod.westus2.cloudapp.azure.com", [Parameter(Mandatory=$false)][string] $MaestroApiVersion = "2019-01-16" ) . $PSScriptRoot\post-build-utils.ps1 # Get all the $SourceRepo subscriptions $normalizedSourceRepo = $SourceRepo.Replace('dnceng@', '') $subscriptions = Get-MaestroSubscriptions -SourceRepository $normalizedSourceRepo -ChannelId $ChannelId if (!$subscriptions) { Write-Host "No subscriptions found for source repo '$normalizedSourceRepo' in channel '$ChannelId'" ExitWithExitCode 0 } $subscriptionsToTrigger = New-Object System.Collections.Generic.List[string] $failedTriggeredSubscription = $false # Get all enabled subscriptions that need dependency flow on 'everyBuild' foreach ($subscription in $subscriptions) { if ($subscription.enabled -and $subscription.policy.updateFrequency -like 'everyBuild' -and $subscription.channel.id -eq $ChannelId) { Write-Host "Should trigger this subscription: $subscription.id" [void]$subscriptionsToTrigger.Add($subscription.id) } } foreach ($subscriptionToTrigger in $subscriptionsToTrigger) { try { Write-Host "Triggering subscription '$subscriptionToTrigger'." Trigger-Subscription -SubscriptionId $subscriptionToTrigger Write-Host "done." } catch { Write-Host "There was an error while triggering subscription '$subscriptionToTrigger'" Write-Host $_ Write-Host $_.ScriptStackTrace $failedTriggeredSubscription = $true } } if ($subscriptionsToTrigger.Count -eq 0) { Write-Host "No subscription matched source repo '$normalizedSourceRepo' and channel ID '$ChannelId'." } elseif ($failedTriggeredSubscription) { Write-Host "At least one subscription failed to be triggered..." ExitWithExitCode 1 } else { Write-Host "All subscriptions were triggered successfully!" }