From 4b8e96528ab025725fda8307b9423d719a86bd1f Mon Sep 17 00:00:00 2001 From: "Dustin L. Howett" Date: Fri, 13 Dec 2024 14:30:21 -0600 Subject: [PATCH] Teach ServicingPipeline to apginate project board items Oops, it didn't support more than 100 items! --- .../ReleaseEngineering/ServicingPipeline.ps1 | 73 +++++++++++-------- 1 file changed, 42 insertions(+), 31 deletions(-) diff --git a/tools/ReleaseEngineering/ServicingPipeline.ps1 b/tools/ReleaseEngineering/ServicingPipeline.ps1 index 92b53803633..c562ae0195d 100644 --- a/tools/ReleaseEngineering/ServicingPipeline.ps1 +++ b/tools/ReleaseEngineering/ServicingPipeline.ps1 @@ -105,48 +105,59 @@ Function Get-GraphQlProjectNumberGivenName($Organization, $Name) { Function Get-GraphQlProjectWithNodes($Organization, $Number) { # It's terrible, but it pulls *all* of the info we need all at once! - $Project = Invoke-GitHubGraphQlApi -Query ' - query($organization: String! $number: Int!) { - organization(login: $organization) { - projectV2(number: $number) { - id - number - title - fields(first:20){ - nodes { - ... on ProjectV2FieldCommon { id name } - ... on ProjectV2SingleSelectField { options { id name } } - } - } - items { - nodes { - id - status: fieldValueByName(name: "Status") { - ... on ProjectV2ItemFieldSingleSelectValue { name } + $cursor = "" + $hasMore = $true + $nodes = @() + While ($hasMore) { + $Project = Invoke-GitHubGraphQlApi -Query ' + query($organization: String!, $number: Int!, $after: String) { + organization(login: $organization) { + projectV2(number: $number) { + id + number + title + fields(first:20){ + nodes { + ... on ProjectV2FieldCommon { id name } + ... on ProjectV2SingleSelectField { options { id name } } } - content { - ... on Issue { - number - closedByPullRequestsReferences(first: 8) { - ... on PullRequestConnection { - nodes { - number - mergeCommit { oid } + } + items(first: 100, after: $after) { + pageInfo { hasNextPage endCursor } + nodes { + id + status: fieldValueByName(name: "Status") { + ... on ProjectV2ItemFieldSingleSelectValue { name } + } + content { + ... on Issue { + number + closedByPullRequestsReferences(first: 8) { + ... on PullRequestConnection { + nodes { + number + mergeCommit { oid } + } } } } - } - ... on PullRequest { - number - mergeCommit { oid } + ... on PullRequest { + number + mergeCommit { oid } + } } } } } } } + ' -Variables @{ organization = $Organization; number = $Number; after = $cursor } + + $n += $Project.organization.projectV2.items.nodes + $cursor = $Project.organization.projectV2.items.pageInfo.endCursor + $hasMore = $Project.organization.projectV2.items.pageInfo.hasNextPage } - ' -Variables @{ organization = $Organization; number = $Number } + $Project.organization.projectV2.items.nodes = $n $Project }