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