diff --git a/tools/actions/commit-queue.sh b/tools/actions/commit-queue.sh index 671ead5bdf24cf..22f306cc36b684 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" @@ -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 "
Commit Queue failed
$(cat output)
$cqurl
" '{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 + continue + fi + + commits="$(git rev-parse $UPSTREAM/$DEFAULT_BRANCH)...$(git rev-parse HEAD)" - 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 - git push $UPSTREAM $DEFAULT_BRANCH + 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