1 . "${PSScriptRoot}\logging.ps1"
2 
3 $DevOpsAPIBaseURI = "https://dev.azure.com/{0}/{1}/_apis/{2}/{3}?{4}api-version=6.0"
4 
Get-DevOpsApiHeaders($Base64EncodedToken)5 function Get-DevOpsApiHeaders ($Base64EncodedToken) {
6   $headers = @{
7     Authorization = "Basic $Base64EncodedToken"
8   }
9   return $headers
10 }
11 
Start-DevOpsBuildnull12 function Start-DevOpsBuild {
13   param (
14     $Organization="azure-sdk",
15     $Project="internal",
16     $SourceBranch,
17     [Parameter(Mandatory = $true)]
18     $DefinitionId,
19     [ValidateNotNullOrEmpty()]
20     [Parameter(Mandatory = $true)]
21     $Base64EncodedAuthToken,
22     [Parameter(Mandatory = $false)]
23     [string]$BuildParametersJson
24   )
25 
26   $uri = "$DevOpsAPIBaseURI" -F $Organization, $Project , "build" , "builds", ""
27 
28   $parameters = @{
29     sourceBranch = $SourceBranch
30     definition = @{ id = $DefinitionId }
31     parameters = $BuildParametersJson
32   }
33 
34   return Invoke-RestMethod `
35           -Method POST `
36           -Body ($parameters | ConvertTo-Json) `
37           -Uri $uri `
38           -Headers (Get-DevOpsApiHeaders -Base64EncodedToken $Base64EncodedAuthToken) `
39           -MaximumRetryCount 3 `
40           -ContentType "application/json"
41 }
42 
Update-DevOpsBuildnull43 function Update-DevOpsBuild {
44   param (
45     $Organization="azure-sdk",
46     $Project="internal",
47     [ValidateNotNullOrEmpty()]
48     [Parameter(Mandatory = $true)]
49     $BuildId,
50     $Status, # pass canceling to cancel build
51     [ValidateNotNullOrEmpty()]
52     [Parameter(Mandatory = $true)]
53     $Base64EncodedAuthToken
54   )
55 
56   $uri = "$DevOpsAPIBaseURI" -F $Organization, $Project, "build", "builds/$BuildId", ""
57   $parameters = @{}
58 
59   if ($Status) { $parameters["status"] = $Status}
60 
61   return Invoke-RestMethod `
62           -Method PATCH `
63           -Body ($parameters | ConvertTo-Json) `
64           -Uri $uri `
65           -Headers (Get-DevOpsApiHeaders -Base64EncodedToken $Base64EncodedAuthToken) `
66           -MaximumRetryCount 3 `
67           -ContentType "application/json"
68 }
69 
Get-DevOpsBuildsnull70 function Get-DevOpsBuilds {
71   param (
72     $Organization="azure-sdk",
73     $Project="internal",
74     $BranchName, #Should start with 'refs/heads/'
75     $Definitions, # Comma seperated string of definition IDs
76     $StatusFilter, # Comma seperated string 'cancelling, completed, inProgress, notStarted'
77     [ValidateNotNullOrEmpty()]
78     [Parameter(Mandatory = $true)]
79     $Base64EncodedAuthToken
80   )
81 
82   $query = ""
83 
84   if ($BranchName) { $query += "branchName=$BranchName&" }
85   if ($Definitions) { $query += "definitions=$Definitions&" }
86   if ($StatusFilter) { $query += "statusFilter=$StatusFilter&" }
87   $uri = "$DevOpsAPIBaseURI" -F $Organization, $Project , "build" , "builds", $query
88 
89   return Invoke-RestMethod `
90           -Method GET `
91           -Uri $uri `
92           -Headers (Get-DevOpsApiHeaders -Base64EncodedToken $Base64EncodedAuthToken) `
93           -MaximumRetryCount 3
94 }
95 
Delete-RetentionLease()96 function Delete-RetentionLease {
97   param (
98     $Organization,
99     $Project,
100     $LeaseId,
101     $Base64EncodedAuthToken
102   )
103 
104   $uri = "https://dev.azure.com/$Organization/$Project/_apis/build/retention/leases?ids=$LeaseId&api-version=6.0-preview.1"
105 
106   return Invoke-RestMethod `
107     -Method DELETE `
108     -Uri $uri `
109     -Headers (Get-DevOpsApiHeaders -Base64EncodedToken $Base64EncodedAuthToken) `
110     -MaximumRetryCount 3
111 }
112 
Get-RetentionLeasesnull113 function Get-RetentionLeases {
114   param (
115     $Organization,
116     $Project,
117     $DefinitionId,
118     $RunId,
119     $OwnerId,
120     $Base64EncodedAuthToken
121   )
122 
123   $uri = "https://dev.azure.com/$Organization/$Project/_apis/build/retention/leases?ownerId=$OwnerId&definitionId=$DefinitionId&runId=$RunId&api-version=6.0-preview.1"
124 
125   return Invoke-RestMethod `
126     -Method GET `
127     -Uri $uri `
128     -Headers (Get-DevOpsApiHeaders -Base64EncodedToken $Base64EncodedAuthToken) `
129     -MaximumRetryCount 3
130 }
131 
Add-RetentionLease()132 function Add-RetentionLease {
133   param (
134     $Organization,
135     $Project,
136     $DefinitionId,
137     $RunId,
138     $OwnerId,
139     $DaysValid,
140     $Base64AuthToken
141   )
142 
143   $parameter = @{}
144   $parameter["definitionId"] = $DefinitionId
145   $parameter["runId"] = $RunId
146   $parameter["ownerId"] = $OwnerId
147   $parameter["daysValid"] = $DaysValid
148 
149 
150   $body = $parameter | ConvertTo-Json
151 
152   $uri = "https://dev.azure.com/$Organization/$Project/_apis/build/retention/leases?api-version=6.0-preview.1"
153 
154   return Invoke-RestMethod `
155           -Method POST `
156           -Body "[$body]" `
157           -Uri $uri `
158           -Headers (Get-DevOpsApiHeaders -Base64EncodedToken $Base64EncodedAuthToken) `
159           -MaximumRetryCount 3 `
160           -ContentType "application/json"
161 
162 }
163