From 3f902c1da4f1c10a7de7da06cdfa20d284dee5d3 Mon Sep 17 00:00:00 2001 From: linsui <2873532-linsui@users.noreply.gitlab.com> Date: Tue, 29 Oct 2024 17:59:42 +0800 Subject: [PATCH] Add a script to merge MRs from bot in batch --- tools/auto-merge.sh | 24 ++++++++++++++++++++++++ tools/merge-autoupdate.sh | 14 ++++++++++++++ 2 files changed, 38 insertions(+) create mode 100755 tools/auto-merge.sh create mode 100755 tools/merge-autoupdate.sh diff --git a/tools/auto-merge.sh b/tools/auto-merge.sh new file mode 100755 index 0000000000..de39ef4755 --- /dev/null +++ b/tools/auto-merge.sh @@ -0,0 +1,24 @@ +#! /usr/bin/env bash + +set -e + +cd "$(dirname "$(dirname "${BASH_SOURCE[0]}")")" + +mr=$1 +glab="glab --repo fdroid/fdroiddata" +echo "Rebasing..." +$glab mr rebase $mr --skip-ci +while [[ $($glab mr view $mr -F json | jq -r '.detailed_merge_status') != "mergeable" ]]; do + echo "Checking status..." + continue +done +echo "Merging..." +$glab mr merge $mr --auto-merge=false --rebase --yes && { + echo "Canceling pipelines..." + merged_commit=$($glab mr view $mr -F json | jq -r 'if .squash then .squash_commit_sha else .sha end') + head_pipelines=$($glab ci list -F json | jq -r 'map(select(.sha == "'$merged_commit'" and (.source == "push" or .source == "merge_request_event")) | .id)[]') + for pipeline in $head_pipelines; do + glab api --method POST --silent projects/:id/pipelines/$pipeline/cancel + done + echo "Done!" +} || echo "Merge failed: https://gitlab.com/fdroid/fdroiddata/-/merge_requests/$mr" diff --git a/tools/merge-autoupdate.sh b/tools/merge-autoupdate.sh new file mode 100755 index 0000000000..f17bcea559 --- /dev/null +++ b/tools/merge-autoupdate.sh @@ -0,0 +1,14 @@ +#! /usr/bin/env bash + +set -e + +cd "$(dirname "$(dirname "${BASH_SOURCE[0]}")")" + +glab="glab --repo fdroid/fdroiddata" +mr_list=$($glab mr list --author checkupdates-bot -F json | jq -r 'map(.iid)[]') +for mr in $mr_list; do + if [[ $($glab mr view $mr -F json | jq -r '.pipeline.status') == "success" ]]; then + echo "Merging $mr..." + ./tools/auto-merge.sh $mr + fi +done