From 66707fa6472dcaba8d0e4a754fd709cd0814f26f Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Sun, 10 Jan 2021 10:04:05 +0100 Subject: [PATCH 1/2] tools: avoid crashing CQ when git push fails --- tools/actions/commit-queue.sh | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/tools/actions/commit-queue.sh b/tools/actions/commit-queue.sh index e0dc01dd526048..e11f27f8fcd6bb 100755 --- a/tools/actions/commit-queue.sh +++ b/tools/actions/commit-queue.sh @@ -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 "
Commit Queue failed
$(cat output)
$cqurl
" '{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" @@ -65,26 +77,20 @@ 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 "
Commit Queue failed
$(cat output)
$cqurl
" '{body: $content}' > output.json - cat output.json - - gitHubCurl "$(commentsUrl "$pr")" POST --data @output.json - - rm output output.json + 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 # interfer 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 + git push $UPSTREAM $DEFAULT_BRANCH >> output 2>&1 || (\ + commit_queue_failed "$pr" && \ + continue \ + ) + + rm output gitHubCurl "$(commentsUrl "$pr")" POST --data '{"body": "Landed in '"$commits"'"}' From 675dd0e638497133a3278613394005396569f2d9 Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Sun, 10 Jan 2021 10:32:34 +0100 Subject: [PATCH 2/2] fixup! tools: avoid crashing CQ when git push fails --- tools/actions/commit-queue.sh | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/tools/actions/commit-queue.sh b/tools/actions/commit-queue.sh index e11f27f8fcd6bb..1b10d13f89f70a 100755 --- a/tools/actions/commit-queue.sh +++ b/tools/actions/commit-queue.sh @@ -76,24 +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 + 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 # interfer again in the future git node land --abort --yes - else - commits="$(git rev-parse $UPSTREAM/$DEFAULT_BRANCH)...$(git rev-parse HEAD)" + continue + fi + + commits="$(git rev-parse $UPSTREAM/$DEFAULT_BRANCH)...$(git rev-parse HEAD)" - git push $UPSTREAM $DEFAULT_BRANCH >> output 2>&1 || (\ - commit_queue_failed "$pr" && \ - continue \ - ) + if ! git push $UPSTREAM $DEFAULT_BRANCH >> output 2>&1; then + commit_queue_failed "$pr" + continue + fi - rm output + rm output - gitHubCurl "$(commentsUrl "$pr")" POST --data '{"body": "Landed in '"$commits"'"}' + gitHubCurl "$(commentsUrl "$pr")" POST --data '{"body": "Landed in '"$commits"'"}' - gitHubCurl "$(issueUrl "$pr")" PATCH --data '{"state": "closed"}' - fi + gitHubCurl "$(issueUrl "$pr")" PATCH --data '{"state": "closed"}' done