...

Text file src/github.com/Azure/azure-sdk-for-go/eng/common/scripts/Queue-Pipeline.ps1

Documentation: github.com/Azure/azure-sdk-for-go/eng/common/scripts

     1<#
     2.SYNOPSIS
     3Queues an Azure DevOps Pipeline run optionally canceling similar runs
     4
     5.PARAMETER Organization
     6Azure DevOps organization name
     7
     8.PARAMETER Project
     9Azure DevOps project name
    10
    11.PARAMETER SourceBranch
    12Source branch use when executing the DevOps pipeline. Specifying an empty string
    13will result in queuing of the run with the default branch configured for the
    14pipeline.
    15
    16.PARAMETER DefinitionId
    17Pipline definition ID
    18
    19.PARAMETER CancelPreviousBuilds
    20Requires a value for SourceBranch. Cancel previous builds before queuing the new 
    21build.
    22
    23.PARAMETER VsoQueuedPipelines
    24Variable name to set in DevOps for the queued pipeline links
    25
    26.PARAMETER Base64EncodedAuthToken
    27Auth token for Azure DevOps API
    28
    29.PARAMETER BuildParametersJson
    30Additional build parameters to provide to the pipeline execution.
    31
    32Of the format:
    33
    34```json
    35{
    36  "variable1": "value1",
    37  "variable2": "value2"
    38}
    39```
    40
    41#>
    42
    43[CmdletBinding(SupportsShouldProcess = $true)]
    44param(
    45  [Parameter(Mandatory = $true)]
    46  [string]$Organization,
    47
    48  [Parameter(Mandatory = $true)]
    49  [string]$Project,
    50
    51  [string]$SourceBranch,
    52
    53  [Parameter(Mandatory = $true)]
    54  [int]$DefinitionId,
    55
    56  [boolean]$CancelPreviousBuilds=$false,
    57
    58  [Parameter(Mandatory = $false)]
    59  [string]$VsoQueuedPipelines,
    60
    61  [Parameter(Mandatory = $true)]
    62  [string]$Base64EncodedAuthToken,
    63
    64  [Parameter(Mandatory = $false)]
    65  [string]$BuildParametersJson
    66)
    67
    68. (Join-Path $PSScriptRoot common.ps1)
    69
    70# Skip if SourceBranch is empty because it we cannot generate a target branch
    71# name from an empty string.
    72if ($CancelPreviousBuilds -and $SourceBranch)
    73{
    74  try {
    75    $queuedBuilds = Get-DevOpsBuilds -BranchName "refs/heads/$SourceBranch" -Definitions $DefinitionId `
    76    -StatusFilter "inProgress, notStarted" -Base64EncodedAuthToken $Base64EncodedAuthToken
    77
    78    if ($queuedBuilds.count -eq 0) {
    79      LogDebug "There is no previous build still inprogress or about to start."
    80    }
    81
    82    foreach ($build in $queuedBuilds.Value) {
    83      $buildID = $build.id
    84      LogDebug "Canceling build [ $($build._links.web.href) ]"
    85      Update-DevOpsBuild -BuildId $buildID -Status "cancelling" -Base64EncodedAuthToken $Base64EncodedAuthToken
    86    }
    87  }
    88  catch {
    89    LogError "Call to DevOps API failed with exception:`n$_"
    90    exit 1
    91  }
    92}
    93
    94try {
    95  $resp = Start-DevOpsBuild `
    96    -Organization $Organization `
    97    -Project $Project `
    98    -SourceBranch $SourceBranch `
    99    -DefinitionId $DefinitionId `
   100    -Base64EncodedAuthToken $Base64EncodedAuthToken `
   101    -BuildParametersJson $BuildParametersJson
   102}
   103catch {
   104  LogError "Start-DevOpsBuild failed with exception:`n$_"
   105  exit 1
   106}
   107
   108LogDebug "Pipeline [ $($resp.definition.name) ] queued at [ $($resp._links.web.href) ]"
   109
   110if ($VsoQueuedPipelines) {
   111  $enVarValue = [System.Environment]::GetEnvironmentVariable($VsoQueuedPipelines)
   112  $QueuedPipelineLinks = if ($enVarValue) { 
   113    "$enVarValue<br>[$($resp.definition.name)]($($resp._links.web.href))"
   114  }else {
   115    "[$($resp.definition.name)]($($resp._links.web.href))"
   116  }
   117  $QueuedPipelineLinks
   118  Write-Host "##vso[task.setvariable variable=$VsoQueuedPipelines]$QueuedPipelineLinks"
   119}

View as plain text