You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
PRChecker.checkGitHubCI() can incorrectly report a PR as having failed GitHub CI when its current head commit has both:
an older cancelled/failed GitHub Actions run; and
a newer successful run of the same workflow.
This can happen when a PR branch is force-pushed away from a commit and later force-pushed back to exactly the same SHA. GitHub
keeps both sets of check suites attached to that commit.
It does not identify whether an older suite has been superseded by a newer run of the same workflow.
As a result, an obsolete cancelled or failed run can permanently prevent the commit queue from accepting that SHA, even though
all current CI runs succeeded.
For each GitHub Actions workflow, only the latest applicable run for the current head SHA should determine the CI result. Older
runs superseded by a newer run of the same workflow should be ignored.
PRChecker.checkGitHubCI()can incorrectly report a PR as having failed GitHub CI when its current head commit has both:This can happen when a PR branch is force-pushed away from a commit and later force-pushed back to exactly the same SHA. GitHub
keeps both sets of check suites attached to that commit.
This occurred on nodejs/node#64803, nodejs/node#64601 whose current head SHA is:
ee1ca501264411a3e993d4ed487f833fb0ffa841a23d7a9a84a190e3804f9b2fb200feb833f3114aTimeline:
https://github.com/nodejs/node/actions/runs/30359390795
cancel-in-progressconfiguration.sea: reject malformed --node-options values node#64803 (comment)
https://github.com/nodejs/node/actions/runs/30360481950
https://ci.nodejs.org/job/node-test-pull-request/75495/
However, the commit queue reported one failed and 15 cancelled GitHub Actions jobs from the older, superseded runs:
nodejs/node#64803 (comment)
The commit checks page contains both the old cancelled suites and the newer successful suites:
https://github.com/nodejs/node/commit/ee1ca501264411a3e993d4ed487f833fb0ffa841/checks
The reported macOS failure was also produced while the old workflow was being cancelled, rather than by a test failure:
https://github.com/nodejs/node/actions/runs/30359390795/job/90275679554
The GraphQL query retrieves up to 100 check suites associated with the current commit:
https://github.com/nodejs/node-core-utils/blob/v7.0.1/lib/queries/PRCommits.gql#L28-L44
checkGitHubCI()then iterates over every GitHub Actions suite and treats any non-successful historical suite as a currentfailure:
https://github.com/nodejs/node-core-utils/blob/v7.0.1/lib/pr_checker.js#L461-L515
It does not identify whether an older suite has been superseded by a newer run of the same workflow.
As a result, an obsolete cancelled or failed run can permanently prevent the commit queue from accepting that SHA, even though
all current CI runs succeeded.
For each GitHub Actions workflow, only the latest applicable run for the current head SHA should determine the CI result. Older
runs superseded by a newer run of the same workflow should be ignored.
Refs: nodejs/node#64601 (comment)
Refs: nodejs/node#64803 (comment)