From ea57783e05c4bc8f85b7ac7fd84215835fd946aa Mon Sep 17 00:00:00 2001 From: Azure SDK Bot <53356347+azure-sdk@users.noreply.github.com> Date: Thu, 25 Mar 2021 18:25:26 -0700 Subject: [PATCH] Sync eng/common directory with azure-sdk-tools for PR 1478 (#1978) * actually pass the _content_ of the reviewers or teamreviewers variable within create-pull-request.yml, update logic in Set-GitHubParameter --- .../templates/steps/create-pull-request.yml | 6 ++-- eng/common/scripts/Invoke-GitHubAPI.ps1 | 29 ++++++++++++------- eng/common/scripts/Submit-PullRequest.ps1 | 11 +++++-- 3 files changed, 31 insertions(+), 15 deletions(-) diff --git a/eng/common/pipelines/templates/steps/create-pull-request.yml b/eng/common/pipelines/templates/steps/create-pull-request.yml index bd76c296f..ecce673e3 100644 --- a/eng/common/pipelines/templates/steps/create-pull-request.yml +++ b/eng/common/pipelines/templates/steps/create-pull-request.yml @@ -84,8 +84,8 @@ steps: -PRTitle "${{ parameters.PRTitle }}" -PRBody "${{ coalesce(parameters.PRBody, parameters.CommitMsg, parameters.PRTitle) }}" -PRLabels "${{ parameters.PRLabels }}" - -UserReviewers "${{ parameters.GHReviewersVariable }}" - -TeamReviewers "${{ parameters.GHTeamReviewersVariable }}" - -Assignees "${{ parameters.GHAssignessVariable }}" + -UserReviewers "$(${{ parameters.GHReviewersVariable }})" + -TeamReviewers "$(${{ parameters.GHTeamReviewersVariable }})" + -Assignees "$(${{ parameters.GHAssignessVariable }})" -CloseAfterOpenForTesting $${{ coalesce(parameters.CloseAfterOpenForTesting, 'false') }} -OpenAsDraft $${{ parameters.OpenAsDraft }} diff --git a/eng/common/scripts/Invoke-GitHubAPI.ps1 b/eng/common/scripts/Invoke-GitHubAPI.ps1 index 46a76251c..5d2981f01 100644 --- a/eng/common/scripts/Invoke-GitHubAPI.ps1 +++ b/eng/common/scripts/Invoke-GitHubAPI.ps1 @@ -9,17 +9,26 @@ function Get-GitHubApiHeaders ($token) { return $headers } -function Set-GitHubAPIParameters ($members, $parameterName, $parameters, $allowEmptyMembers=$false) { - if ($null -ne $members) { - if ($members -is [array]) - { - $parameters[$parameterName] = $members - } - else { - $memberAdditions = @($members.Split(",") | % { $_.Trim() } | ? { return $_ }) - if (($memberAdditions.Count -gt 0) -or $allowEmptyMembers) { - $parameters[$parameterName] = $memberAdditions +function SplitParameterArray($members) { + if ($null -ne $members) { + if ($members -is [array]) + { + return $members } + else { + return (@($members.Split(",") | % { $_.Trim() } | ? { return $_ })) + } + } +} + +function Set-GitHubAPIParameters ($members, $parameterName, $parameters, $allowEmptyMembers = $false) { + if ($null -ne $members) { + [array]$memberAdditions = SplitParameterArray -members $members + + if ($null -eq $memberAdditions -and $allowEmptyMembers){ $memberAdditions = @() } + + if ($memberAdditions.Count -gt 0 -or $allowEmptyMembers) { + $parameters[$parameterName] = $memberAdditions } } diff --git a/eng/common/scripts/Submit-PullRequest.ps1 b/eng/common/scripts/Submit-PullRequest.ps1 index 40a3b5ac6..890590fee 100644 --- a/eng/common/scripts/Submit-PullRequest.ps1 +++ b/eng/common/scripts/Submit-PullRequest.ps1 @@ -108,12 +108,19 @@ else { $resp | Write-Verbose LogDebug "Pull request created https://github.com/$RepoOwner/$RepoName/pull/$($resp.number)" + $prOwnerUser = $resp.user.login + # setting variable to reference the pull request by number Write-Host "##vso[task.setvariable variable=Submitted.PullRequest.Number]$($resp.number)" - if ($UserReviewers -or $TeamReviewers) { + # ensure that the user that was used to create the PR is not attempted to add as a reviewer + # we cast to an array to ensure that length-1 arrays actually stay as array values + $cleanedUsers = @(SplitParameterArray -members $UserReviewers) | ? { $_ -ne $prOwnerUser -and $null -ne $_ } + $cleanedTeamReviewers = @(SplitParameterArray -members $TeamReviewers) | ? { $_ -ne $prOwnerUser -and $null -ne $_ } + + if ($cleanedUsers -or $cleanedTeamReviewers) { Add-GitHubPullRequestReviewers -RepoOwner $RepoOwner -RepoName $RepoName -PrNumber $resp.number ` - -Users $UserReviewers -Teams $TeamReviewers -AuthToken $AuthToken + -Users $cleanedUsers -Teams $cleanedTeamReviewers -AuthToken $AuthToken } if ($CloseAfterOpenForTesting) {