@@ -16,9 +16,27 @@ function Get-Base64EncodedToken([string]$AuthToken)
1616 return $encodedAuthToken
1717}
1818
19- function Get-DevOpsApiHeaders ($Base64EncodedToken ) {
20- $headers = @ {
21- Authorization = " Basic $Base64EncodedToken "
19+ # The Base64EncodedToken would be from a PAT that was passed in and the header requires Basic authorization
20+ # The AccessToken would be the querying the Azure resource with the following command:
21+ # az account get-access-token --resource "499b84ac-1321-427f-aa17-267ca6975798" --query "accessToken" --output tsv
22+ # The header for an AccessToken requires Bearer authorization
23+ function Get-DevOpsApiHeaders {
24+ param (
25+ $Base64EncodedToken = $null ,
26+ $BearerToken = $null
27+ )
28+ $headers = $null
29+ if (! [string ]::IsNullOrWhiteSpace($Base64EncodedToken )) {
30+ $headers = @ {
31+ Authorization = " Basic $Base64EncodedToken "
32+ }
33+ } elseif (! [string ]::IsNullOrWhiteSpace($BearerToken )) {
34+ $headers = @ {
35+ Authorization = " Bearer $BearerToken "
36+ }
37+ } else {
38+ LogError " Get-DevOpsApiHeaders::Unable to set the Authentication in the header because neither Base64EncodedToken nor BearerToken are set."
39+ exit 1
2240 }
2341 return $headers
2442}
@@ -30,9 +48,8 @@ function Start-DevOpsBuild {
3048 $SourceBranch ,
3149 [Parameter (Mandatory = $true )]
3250 $DefinitionId ,
33- [ValidateNotNullOrEmpty ()]
34- [Parameter (Mandatory = $true )]
35- $Base64EncodedAuthToken ,
51+ $Base64EncodedToken = $null ,
52+ $BearerToken = $null ,
3653 [Parameter (Mandatory = $false )]
3754 [string ]$BuildParametersJson
3855 )
@@ -45,11 +62,13 @@ function Start-DevOpsBuild {
4562 parameters = $BuildParametersJson
4663 }
4764
65+ $headers = (Get-DevOpsApiHeaders - Base64EncodedToken $Base64EncodedToken - BearerToken $BearerToken )
66+
4867 return Invoke-RestMethod `
4968 - Method POST `
5069 - Body ($parameters | ConvertTo-Json ) `
5170 - Uri $uri `
52- - Headers ( Get-DevOpsApiHeaders - Base64EncodedToken $Base64EncodedAuthToken ) `
71+ - Headers $headers `
5372 - MaximumRetryCount 3 `
5473 - ContentType " application/json"
5574}
@@ -62,21 +81,22 @@ function Update-DevOpsBuild {
6281 [Parameter (Mandatory = $true )]
6382 $BuildId ,
6483 $Status , # pass canceling to cancel build
65- [ValidateNotNullOrEmpty ()]
66- [Parameter (Mandatory = $true )]
67- $Base64EncodedAuthToken
84+ $Base64EncodedToken = $null ,
85+ $BearerToken = $null
6886 )
6987
7088 $uri = " $DevOpsAPIBaseURI " -F $Organization , $Project , " build" , " builds/$BuildId " , " "
7189 $parameters = @ {}
7290
7391 if ($Status ) { $parameters [" status" ] = $Status }
7492
93+ $headers = (Get-DevOpsApiHeaders - Base64EncodedToken $Base64EncodedToken - BearerToken $BearerToken )
94+
7595 return Invoke-RestMethod `
7696 - Method PATCH `
7797 - Body ($parameters | ConvertTo-Json ) `
7898 - Uri $uri `
79- - Headers ( Get-DevOpsApiHeaders - Base64EncodedToken $Base64EncodedAuthToken ) `
99+ - Headers $headers `
80100 - MaximumRetryCount 3 `
81101 - ContentType " application/json"
82102}
@@ -88,9 +108,8 @@ function Get-DevOpsBuilds {
88108 $BranchName , # Should start with 'refs/heads/'
89109 $Definitions , # Comma seperated string of definition IDs
90110 $StatusFilter , # Comma seperated string 'cancelling, completed, inProgress, notStarted'
91- [ValidateNotNullOrEmpty ()]
92- [Parameter (Mandatory = $true )]
93- $Base64EncodedAuthToken
111+ $Base64EncodedToken = $null ,
112+ $BearerToken = $null
94113 )
95114
96115 $query = " "
@@ -100,10 +119,12 @@ function Get-DevOpsBuilds {
100119 if ($StatusFilter ) { $query += " statusFilter=$StatusFilter &" }
101120 $uri = " $DevOpsAPIBaseURI " -F $Organization , $Project , " build" , " builds" , $query
102121
122+ $headers = (Get-DevOpsApiHeaders - Base64EncodedToken $Base64EncodedToken - BearerToken $BearerToken )
123+
103124 return Invoke-RestMethod `
104125 - Method GET `
105126 - Uri $uri `
106- - Headers ( Get-DevOpsApiHeaders - Base64EncodedToken $Base64EncodedAuthToken ) `
127+ - Headers $headers `
107128 - MaximumRetryCount 3
108129}
109130
@@ -112,15 +133,18 @@ function Delete-RetentionLease {
112133 $Organization ,
113134 $Project ,
114135 $LeaseId ,
115- $Base64EncodedAuthToken
136+ $Base64EncodedToken = $null ,
137+ $BearerToken = $null
116138 )
117139
118140 $uri = " https://dev.azure.com/$Organization /$Project /_apis/build/retention/leases?ids=$LeaseId &api-version=6.0-preview.1"
119141
142+ $headers = (Get-DevOpsApiHeaders - Base64EncodedToken $Base64EncodedToken - BearerToken $BearerToken )
143+
120144 return Invoke-RestMethod `
121145 - Method DELETE `
122146 - Uri $uri `
123- - Headers ( Get-DevOpsApiHeaders - Base64EncodedToken $Base64EncodedAuthToken ) `
147+ - Headers $headers `
124148 - MaximumRetryCount 3
125149}
126150
@@ -131,15 +155,18 @@ function Get-RetentionLeases {
131155 $DefinitionId ,
132156 $RunId ,
133157 $OwnerId ,
134- $Base64EncodedAuthToken
158+ $Base64EncodedToken = $null ,
159+ $BearerToken = $null
135160 )
136161
137162 $uri = " https://dev.azure.com/$Organization /$Project /_apis/build/retention/leases?ownerId=$OwnerId &definitionId=$DefinitionId &runId=$RunId &api-version=6.0-preview.1"
138163
164+ $headers = (Get-DevOpsApiHeaders - Base64EncodedToken $Base64EncodedToken - BearerToken $BearerToken )
165+
139166 return Invoke-RestMethod `
140167 - Method GET `
141168 - Uri $uri `
142- - Headers ( Get-DevOpsApiHeaders - Base64EncodedToken $Base64EncodedAuthToken ) `
169+ - Headers $headers `
143170 - MaximumRetryCount 3
144171}
145172
@@ -151,7 +178,8 @@ function Add-RetentionLease {
151178 $RunId ,
152179 $OwnerId ,
153180 $DaysValid ,
154- $Base64EncodedAuthToken
181+ $Base64EncodedToken = $null ,
182+ $BearerToken = $null
155183 )
156184
157185 $parameter = @ {}
@@ -165,12 +193,13 @@ function Add-RetentionLease {
165193
166194 $uri = " https://dev.azure.com/$Organization /$Project /_apis/build/retention/leases?api-version=6.0-preview.1"
167195
196+ $headers = (Get-DevOpsApiHeaders - Base64EncodedToken $Base64EncodedToken - BearerToken $BearerToken )
197+
168198 return Invoke-RestMethod `
169199 - Method POST `
170200 - Body " [$body ]" `
171201 - Uri $uri `
172- - Headers ( Get-DevOpsApiHeaders - Base64EncodedToken $Base64EncodedAuthToken ) `
202+ - Headers $headers `
173203 - MaximumRetryCount 3 `
174204 - ContentType " application/json"
175-
176205}
0 commit comments