Skip to content

Commit 014e03a

Browse files
committed
fix(ci): handle pagination for closing issues and await label updates in close-labeler
1 parent 9bab456 commit 014e03a

1 file changed

Lines changed: 55 additions & 37 deletions

File tree

.github/workflows/close-labeler.yml

Lines changed: 55 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -18,53 +18,71 @@ jobs:
1818
script: |
1919
console.log("PR Details", context.issue)
2020
21-
const result = await github.graphql(
22-
`
23-
query($owner: String!, $name: String!, $prNum: Int!) {
24-
repository(owner: $owner, name: $name) {
25-
pullRequest(number: $prNum) {
26-
closingIssuesReferences(first: 10) {
27-
nodes {
28-
number
29-
repository {
30-
name
31-
owner {
32-
login
33-
}
21+
let hasNextPage = true;
22+
let afterCursor = null;
23+
24+
while (hasNextPage) {
25+
const result = await github.graphql(
26+
`
27+
query($owner: String!, $name: String!, $prNum: Int!, $afterCursor: String) {
28+
repository(owner: $owner, name: $name) {
29+
pullRequest(number: $prNum) {
30+
closingIssuesReferences(first: 50, after: $afterCursor) {
31+
pageInfo {
32+
hasNextPage
33+
endCursor
3434
}
35-
labels(first: 50) {
36-
edges {
37-
node {
38-
name
35+
nodes {
36+
number
37+
repository {
38+
name
39+
owner {
40+
login
41+
}
42+
}
43+
labels(first: 50) {
44+
edges {
45+
node {
46+
name
47+
}
3948
}
4049
}
4150
}
4251
}
4352
}
4453
}
4554
}
46-
}
47-
`,
48-
{
49-
owner: context.issue.owner,
50-
name: context.issue.repo,
51-
prNum: context.issue.number,
52-
},
53-
)
54-
console.log("GraphQL result", JSON.stringify(result, null, 2));
55+
`,
56+
{
57+
owner: context.issue.owner,
58+
name: context.issue.repo,
59+
prNum: context.issue.number,
60+
afterCursor,
61+
},
62+
)
5563
56-
for (const node of result.repository.pullRequest.closingIssuesReferences.nodes) {
57-
const shouldQA = node.labels.edges.find(edge => edge.node.name === "Enhancement" || edge.node.name === "Bug") != null
58-
if (!shouldQA) {
59-
continue
64+
const closingIssues = result?.repository?.pullRequest?.closingIssuesReferences
65+
if (!closingIssues?.nodes) {
66+
break
6067
}
61-
console.log("Adding QA to", node.repository.owner.login, node.repository.name, node.number)
62-
github.rest.issues.addLabels({
63-
issue_number: node.number,
64-
owner: node.repository.owner.login,
65-
repo: node.repository.name,
66-
labels: ["QA"],
67-
})
68+
69+
for (const node of closingIssues.nodes) {
70+
const shouldQA = node.labels.edges.find(edge => edge.node.name === "Enhancement" || edge.node.name === "Bug") != null
71+
if (!shouldQA) {
72+
continue
73+
}
74+
console.log("Adding QA to", node.repository.owner.login, node.repository.name, node.number)
75+
await github.rest.issues.addLabels({
76+
issue_number: node.number,
77+
owner: node.repository.owner.login,
78+
repo: node.repository.name,
79+
labels: ["QA"],
80+
})
81+
}
82+
83+
hasNextPage = closingIssues.pageInfo?.hasNextPage ?? false
84+
afterCursor = closingIssues.pageInfo?.endCursor ?? null
6885
}
6986
7087
console.log("Fin")
88+

0 commit comments

Comments
 (0)