From 444a212b111ee5e66f614b950fe1d0b9fcf9b5e7 Mon Sep 17 00:00:00 2001 From: linsui <2873532-linsui@users.noreply.gitlab.com> Date: Thu, 18 Sep 2025 05:48:35 +0000 Subject: [PATCH] Fix tools/auto-merge.sh --- tools/auto-merge.sh | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/tools/auto-merge.sh b/tools/auto-merge.sh index 870fbaadb7..f49739bd89 100755 --- a/tools/auto-merge.sh +++ b/tools/auto-merge.sh @@ -15,11 +15,24 @@ function retry { echo $output } -echo "Rebasing..." -retry $glab mr rebase $mr --skip-ci - echo "Merging..." -retry $glab mr merge $mr --auto-merge=false --rebase --yes +while status=$(glab api projects/:id/merge_requests/$mr | jq -r '.detailed_merge_status'); do + if [[ $status = "approvals_syncing" || $status = "checking" ]]; then + continue + elif [[ $status = "need_rebase" ]]; then + echo "Rebasing..." + retry $glab mr rebase $mr --skip-ci + elif [[ $status = "mergeable" ]]; then + glab api --method PUT projects/:id/merge_requests/$mr/merge 2>&1 > /dev/null + if [[ $? = 0 ]]; then + break + fi + else + echo "Failed to merge $mr: $status" + exit 0 + fi +done + echo "Canceling pipelines..." merged_commit=$(retry $glab mr view $mr -F json | jq -r 'if .squash then .squash_commit_sha else .sha end') head_pipelines=$(retry $glab ci list -F json | jq -r 'map(select(.sha == "'$merged_commit'" and (.source == "push" or .source == "merge_request_event")) | .id)[]')