Skip to content

Commit 718c02e

Browse files
committed
Sync eng/common directory with azure-sdk-tools repository for Tools PR Azure/azure-sdk-tools#916
1 parent ba1d632 commit 718c02e

File tree

4 files changed

+53
-61
lines changed

4 files changed

+53
-61
lines changed

eng/common/pipelines/templates/steps/create-pull-request.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ steps:
7474
- task: PowerShell@2
7575
displayName: Tag a Reviewer on PR
7676
condition: and(succeeded(), eq(variables['HasChanges'], 'true'))
77+
continueOnError: true
7778
inputs:
7879
pwsh: true
7980
workingDirectory: ${{ parameters.WorkingDirectory }}

eng/common/pipelines/templates/steps/get-pr-owners.yml

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,9 @@ steps:
1818
--kusto-database-var KUSTO_DB `
1919
--kusto-table-var KUSTO_TABLE `
2020
--identity "$(Build.QueuedBy)"
21-
$resolvedIdentity = $result[-1] | ConvertFrom-Json
22-
23-
Write-Host $resolvedIdentity
24-
25-
Write-Output "##vso[task.setvariable variable=${{ parameters.TargetVariable }}]$($resolvedIdentity.GithubUserName)"
21+
--vsoVariable "${{ parameters.TargetVariable }}"
2622
displayName: 'Resolving Queuing User'
23+
continueOnError: true
2724
workingDirectory: $(Build.SourcesDirectory)/tools_repo/tools/notification-configuration/identity-resolver
2825
env:
2926
APP_ID: $(notification-aad-app-id)
@@ -37,10 +34,12 @@ steps:
3734
Remove-Item -Force -Recurse $(Build.SourcesDirectory)/tools_repo
3835
displayName: Clean Up Cloned Tools Repo
3936
40-
- pwsh: |
41-
$originalValue = "$(${{ parameters.TargetVariable }})"
42-
$result = $(Build.SourcesDirectory)/eng/common/scripts/get-codeowners.ps1 -TargetDirectory /sdk/${{ parameters.ServiceDirectory }}/ -RootDirectory $(Build.SourcesDirectory)
43-
if ($result) {
44-
Write-Output "##vso[task.setvariable variable=${{ parameters.TargetVariable }}]$originalValue,$result"
45-
}
46-
displayName: Add CodeOwners if Present
37+
- task: PowerShell@2
38+
displayName: Add CodeOwners if Present
39+
inputs:
40+
pwsh: true
41+
filePath: $(Build.SourcesDirectory)/eng/common/scripts/get-codeowners.ps1
42+
arguments: >
43+
-TargetDirectory "/sdk/${{ parameters.ServiceDirectory }}/"
44+
-RootDirectory "$(Build.SourcesDirectory)"
45+
-VsoVariable "${{ parameters.TargetVariable }}"

eng/common/scripts/add-pullrequest-reviewers.ps1

Lines changed: 29 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,32 @@ param(
1818
$AuthToken
1919
)
2020

21+
function AddMembers($memberName, $additionSet) {
22+
$headers = @{
23+
Authorization = "bearer $AuthToken"
24+
}
25+
$uri = "https://api.github.com/repos/$RepoOwner/$RepoName/pulls/$PRNumber/requested_reviewers"
26+
$errorOccurred = $false
27+
28+
foreach ($id in $additionSet) {
29+
try {
30+
$postResp = @{}
31+
$postResp[$memberName] = @($id)
32+
$postResp = $postResp | ConvertTo-Json
33+
34+
Write-Host $postResp
35+
$resp = Invoke-RestMethod -Method Post -Headers $headers -Body $postResp -Uri $uri -MaximumRetryCount 3
36+
$resp | Write-Verbose
37+
}
38+
catch {
39+
Write-Host "Error attempting to add $user `n$_"
40+
$errorOccurred = $true
41+
}
42+
}
43+
44+
return $errorOccurred
45+
}
46+
2147
# at least one of these needs to be populated
2248
if (-not $GitHubUsers -and -not $GitHubTeams) {
2349
Write-Host "No user provided for addition, exiting."
@@ -27,54 +53,9 @@ if (-not $GitHubUsers -and -not $GitHubTeams) {
2753
$userAdditions = @($GitHubUsers.Split(",") | % { $_.Trim() } | ? { return $_ })
2854
$teamAdditions = @($GitHubTeams.Split(",") | % { $_.Trim() } | ? { return $_ })
2955

30-
$headers = @{
31-
Authorization = "bearer $AuthToken"
32-
}
33-
$uri = "https://api.github.com/repos/$RepoOwner/$RepoName/pulls/$PRNumber/requested_reviewers"
56+
$errorsOccurredAddingUsers = AddMembers -memberName "reviewers" -additionSet $userAdditions
57+
$errorsOccurredAddingTeams = AddMembers -memberName "team_reviewers" -additionSet $teamAdditions
3458

35-
try {
36-
$resp = Invoke-RestMethod -Headers $headers $uri -MaximumRetryCount 3
37-
}
38-
catch {
39-
Write-Error "Invoke-RestMethod [$uri] failed with exception:`n$_"
59+
if ($errorsOccurredAddingUsers -or $errorsOccurredAddingTeams) {
4060
exit 1
4161
}
42-
43-
# the response object takes this form: https://developer.github.com/v3/pulls/review_requests/#response-1
44-
# before we can push a new reviewer, we need to pull the simple Ids out of the complex objects that came back in the response
45-
$userReviewers = @($resp.users | % { return $_.login })
46-
$teamReviewers = @($resp.teams | % { return $_.slug })
47-
48-
if (!$userReviewers) { $modifiedUserReviewers = @() } else { $modifiedUserReviewers = $userReviewers.Clone() }
49-
$modifiedUserReviewers += ($userAdditions | ? { !$modifiedUserReviewers.Contains($_) })
50-
51-
if ($teamReviewers) { $modifiedTeamReviewers = @() } else { $modifiedTeamReviewers = $teamReviewers.Clone() }
52-
$modifiedTeamReviewers += ($teamAdditions | ? { !$modifiedTeamReviewers.Contains($_) })
53-
54-
$detectedUserDiffs = Compare-Object -ReferenceObject $userReviewers -DifferenceObject $modifiedUserReviewers
55-
$detectedTeamDiffs = Compare-Object -ReferenceObject $teamReviewers -DifferenceObject $modifiedTeamReviewers
56-
57-
# Compare-Object returns values when there is a difference between the comparied objects.
58-
# we only want to run the update if there IS a difference.
59-
if ($detectedUserDiffs -or $detectedTeamDiffs) {
60-
$postResp = @{}
61-
62-
if ($modifiedUserReviewers) { $postResp["reviewers"] = $modifiedUserReviewers }
63-
if ($modifiedTeamReviewers) { $postResp["team_reviewers"] = $modifiedTeamReviewers }
64-
65-
$postResp = $postResp | ConvertTo-Json
66-
67-
try {
68-
Write-Host $postResp
69-
$resp = Invoke-RestMethod -Method Post -Headers $headers -Body $postResp -Uri $uri -MaximumRetryCount 3
70-
$resp | Write-Verbose
71-
}
72-
catch {
73-
Write-Error "Unable to update PR reviewers. `n$_"
74-
}
75-
}
76-
else {
77-
$results = $GitHubUsers + $GitHubTeams
78-
Write-Host "Reviewers $results already added. Exiting."
79-
exit(0)
80-
}

eng/common/scripts/get-codeowners.ps1

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
param (
22
$TargetDirectory, # should be in relative form from root of repo. EG: sdk/servicebus
3-
$RootDirectory # ideally $(Build.SourcesDirectory)
3+
$RootDirectory, # ideally $(Build.SourcesDirectory)
4+
$VsoVariable = "" # target devops output variable
45
)
56
$target = $TargetDirectory.ToLower().Trim("/")
67
$codeOwnersLocation = Join-Path $RootDirectory -ChildPath ".github/CODEOWNERS"
@@ -29,6 +30,16 @@ $results = $ownedFolders[$target]
2930

3031
if ($results) {
3132
Write-Host "Found a folder $results to match $target"
33+
34+
if ($VsoVariable) {
35+
$alreadyPresent = [System.Environment]::GetEnvironmentVariable($VsoVariable)
36+
37+
if ($alreadyPresent) {
38+
$results += ",$alreadyPresent"
39+
}
40+
Write-Host "##vso[task.setvariable variable=$VsoVariable;]$results"
41+
}
42+
3243
return $results
3344
}
3445
else {

0 commit comments

Comments
 (0)