mirror of
https://github.com/nodejs/node.git
synced 2026-10-14 10:26:26 -04:00
tools: avoid crashing CQ when git push fails
PR-URL: https://github.com/nodejs/node/pull/36861 Reviewed-By: Mary Marchini <oss@mmarchini.me>
This commit is contained in:
1 parent
864195bac9
commit
240c8bc190
1 file changed
+28
-21
@@ -37,6 +37,18 @@ gitHubCurl() {
|
||||
--header 'content-type: application/json' "$@"
|
||||
}
|
||||
|
||||
commit_queue_failed() {
|
||||
gitHubCurl "$(labelsUrl "${1}")" POST --data '{"labels": ["'"${COMMIT_QUEUE_FAILED_LABEL}"'"]}'
|
||||
|
||||
# shellcheck disable=SC2154
|
||||
cqurl="${GITHUB_SERVER_URL}/${OWNER}/${REPOSITORY}/actions/runs/${GITHUB_RUN_ID}"
|
||||
jq -n --arg content "<details><summary>Commit Queue failed</summary><pre>$(cat output)</pre><a href='$cqurl'>$cqurl</a></details>" '{body: $content}' > output.json
|
||||
cat output.json
|
||||
|
||||
gitHubCurl "$(commentsUrl "${1}")" POST --data @output.json
|
||||
|
||||
rm output output.json
|
||||
}
|
||||
|
||||
# TODO(mmarchini): should this be set with whoever added the label for each PR?
|
||||
git config --local user.email "github-bot@iojs.org"
|
||||
@@ -64,30 +76,25 @@ for pr in "$@"; do
|
||||
|
||||
# TODO(mmarchini): workaround for ncu not returning the expected status code,
|
||||
# if the "Landed in..." message was not on the output we assume land failed
|
||||
if ! tail -n 10 output | grep '. Post "Landed in .*/pull/'"${pr}"; then
|
||||
gitHubCurl "$(labelsUrl "$pr")" POST --data '{"labels": ["'"${COMMIT_QUEUE_FAILED_LABEL}"'"]}'
|
||||
|
||||
# shellcheck disable=SC2154
|
||||
cqurl="${GITHUB_SERVER_URL}/${OWNER}/${REPOSITORY}/actions/runs/${GITHUB_RUN_ID}"
|
||||
jq -n --arg content "<details><summary>Commit Queue failed</summary><pre>$(cat output)</pre><a href='$cqurl'>$cqurl</a></details>" '{body: $content}' > output.json
|
||||
cat output.json
|
||||
|
||||
gitHubCurl "$(commentsUrl "$pr")" POST --data @output.json
|
||||
|
||||
rm output output.json
|
||||
if ! grep -q '. Post "Landed in .*/pull/'"${pr}" output; then
|
||||
commit_queue_failed "$pr"
|
||||
# If `git node land --abort` fails, we're in unknown state. Better to stop
|
||||
# the script here, current PR was removed from the queue so it shouldn't
|
||||
# interfere again in the future.
|
||||
git node land --abort --yes
|
||||
else
|
||||
rm output
|
||||
|
||||
commits="$(git rev-parse $UPSTREAM/$DEFAULT_BRANCH)...$(git rev-parse HEAD)"
|
||||
|
||||
git push $UPSTREAM $DEFAULT_BRANCH
|
||||
|
||||
gitHubCurl "$(commentsUrl "$pr")" POST --data '{"body": "Landed in '"$commits"'"}'
|
||||
|
||||
gitHubCurl "$(issueUrl "$pr")" PATCH --data '{"state": "closed"}'
|
||||
continue
|
||||
fi
|
||||
|
||||
commits="$(git rev-parse $UPSTREAM/$DEFAULT_BRANCH)...$(git rev-parse HEAD)"
|
||||
|
||||
if ! git push $UPSTREAM $DEFAULT_BRANCH >> output 2>&1; then
|
||||
commit_queue_failed "$pr"
|
||||
continue
|
||||
fi
|
||||
|
||||
rm output
|
||||
|
||||
gitHubCurl "$(commentsUrl "$pr")" POST --data '{"body": "Landed in '"$commits"'"}'
|
||||
|
||||
gitHubCurl "$(issueUrl "$pr")" PATCH --data '{"state": "closed"}'
|
||||
done
|
||||
Reference in new issue
Block a user