...
1. "${PSScriptRoot}\logging.ps1"
2
3$DevOpsAPIBaseURI = "https://dev.azure.com/{0}/{1}/_apis/{2}/{3}?{4}api-version=6.0"
4
5function Get-DevOpsApiHeaders ($Base64EncodedToken) {
6 $headers = @{
7 Authorization = "Basic $Base64EncodedToken"
8 }
9 return $headers
10}
11
12function 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
43function 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
70function 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
96function 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
113function 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
132function Add-RetentionLease {
133 param (
134 $Organization,
135 $Project,
136 $DefinitionId,
137 $RunId,
138 $OwnerId,
139 $DaysValid,
140 $Base64EncodedAuthToken
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}
View as plain text