Skip to content

Commit 0f17ee1

Browse files
Add Invoke-DevOpsAPI.ps1, Add functions for Canceling and Listing Builds (Azure#17178)
Co-authored-by: Chidozie Ononiwu <chononiw@microsoft.com>
1 parent 5694b1e commit 0f17ee1

File tree

5 files changed

+189
-155
lines changed

5 files changed

+189
-155
lines changed

eng/common/scripts/Get-PullRequestCreator.ps1

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,18 @@ param (
66
[string]$RepoName,
77

88
[Parameter(Mandatory = $true)]
9-
$PullRequestNumber
9+
$PullRequestNumber,
10+
11+
[Parameter(Mandatory = $true)]
12+
[string]$AuthToken
1013
)
1114

1215
. "${PSScriptRoot}\common.ps1"
1316

1417
try
1518
{
16-
$pullRequest = Get-GithubPullRequest -RepoOwner $RepoOwner -RepoName $RepoName -PullRequestNumber $PullRequestNumber
19+
$pullRequest = Get-GithubPullRequest -RepoOwner $RepoOwner -RepoName $RepoName `
20+
-PullRequestNumber $PullRequestNumber -AuthToken $AuthToken
1721
Write-Host "##vso[task.setvariable variable=System.PullRequest.Creator;]$($pullRequest.user.login)"
1822
}
1923
catch
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
. "${PSScriptRoot}\logging.ps1"
2+
3+
$DevOpsAPIBaseURI = "https://dev.azure.com/{0}/{1}/_apis/{2}/{3}?{4}api-version=6.0"
4+
5+
function Get-DevOpsApiHeaders ($Base64EncodedToken) {
6+
$headers = @{
7+
Authorization = "Basic $Base64EncodedToken"
8+
}
9+
return $headers
10+
}
11+
12+
function Start-DevOpsBuild {
13+
param (
14+
$Organization="azure-sdk",
15+
$Project="internal",
16+
[Parameter(Mandatory = $true)]
17+
$SourceBranch,
18+
[Parameter(Mandatory = $true)]
19+
$DefinitionId,
20+
[ValidateNotNullOrEmpty()]
21+
[Parameter(Mandatory = $true)]
22+
$Base64EncodedAuthToken
23+
)
24+
25+
$uri = "$DevOpsAPIBaseURI" -F $Organization, $Project , "build" , "builds", ""
26+
27+
$parameters = @{
28+
sourceBranch = $SourceBranch
29+
definition = @{ id = $DefinitionId }
30+
}
31+
32+
return Invoke-RestMethod `
33+
-Method POST `
34+
-Body ($parameters | ConvertTo-Json) `
35+
-Uri $uri `
36+
-Headers (Get-DevOpsApiHeaders -Base64EncodedToken $Base64EncodedAuthToken) `
37+
-MaximumRetryCount 3 `
38+
-ContentType "application/json"
39+
}
40+
41+
function Update-DevOpsBuild {
42+
param (
43+
$Organization="azure-sdk",
44+
$Project="internal",
45+
[ValidateNotNullOrEmpty()]
46+
[Parameter(Mandatory = $true)]
47+
$BuildId,
48+
$Status, # pass canceling to cancel build
49+
[ValidateNotNullOrEmpty()]
50+
[Parameter(Mandatory = $true)]
51+
$Base64EncodedAuthToken
52+
)
53+
54+
$uri = "$DevOpsAPIBaseURI" -F $Organization, $Project, "build", "builds/$BuildId", ""
55+
$parameters = @{}
56+
57+
if ($Status) { $parameters["status"] = $Status}
58+
59+
return Invoke-RestMethod `
60+
-Method PATCH `
61+
-Body ($parameters | ConvertTo-Json) `
62+
-Uri $uri `
63+
-Headers (Get-DevOpsApiHeaders -Base64EncodedToken $Base64EncodedAuthToken) `
64+
-MaximumRetryCount 3 `
65+
-ContentType "application/json"
66+
}
67+
68+
function Get-DevOpsBuilds {
69+
param (
70+
$Organization="azure-sdk",
71+
$Project="internal",
72+
$BranchName, #Should start with 'refs/heads/'
73+
$Definitions, # Comma seperated string of definition IDs
74+
$StatusFilter, # Comma seperated string 'cancelling, completed, inProgress, notStarted'
75+
[ValidateNotNullOrEmpty()]
76+
[Parameter(Mandatory = $true)]
77+
$Base64EncodedAuthToken
78+
)
79+
80+
$query = ""
81+
82+
if ($BranchName) { $query += "branchName=$BranchName&" }
83+
if ($Definitions) { $query += "definitions=$Definitions&" }
84+
if ($StatusFilter) { $query += "statusFilter=$StatusFilter&" }
85+
$uri = "$DevOpsAPIBaseURI" -F $Organization, $Project , "build" , "builds", $query
86+
87+
return Invoke-RestMethod `
88+
-Method GET `
89+
-Uri $uri `
90+
-Headers (Get-DevOpsApiHeaders -Base64EncodedToken $Base64EncodedAuthToken) `
91+
-MaximumRetryCount 3
92+
}

0 commit comments

Comments
 (0)