Welcome to mirror list, hosted at ThFree Co, Russian Federation.

trigger-subscriptions.ps1 « post-build « common « eng - github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 55dea518ac585081fc42e1f9ed0e83ff042dc8aa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
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'
)

try {
  . $PSScriptRoot\post-build-utils.ps1

  # Get all the $SourceRepo subscriptions
  $normalizedSourceRepo = $SourceRepo.Replace('dnceng@', '')
  $subscriptions = Get-MaestroSubscriptions -SourceRepository $normalizedSourceRepo -ChannelId $ChannelId

  if (!$subscriptions) {
    Write-PipelineTelemetryError -Category 'TriggerSubscriptions' -Message "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-PipelineTelemetryError -Category 'TriggerSubscriptions' -Message 'At least one subscription failed to be triggered...'
    ExitWithExitCode 1
  }
  else {
    Write-Host 'All subscriptions were triggered successfully!'
  }
}
catch {
  Write-Host $_.ScriptStackTrace
  Write-PipelineTelemetryError -Category 'TriggerSubscriptions' -Message $_
  ExitWithExitCode 1
}