tools: auto retry all gitlab queries
This commit is contained in:
parent
ed9c5218c0
commit
7531ad7fff
@ -6,20 +6,25 @@ cd "$(dirname "$(dirname "${BASH_SOURCE[0]}")")"
|
|||||||
|
|
||||||
mr=$1
|
mr=$1
|
||||||
glab="glab --repo fdroid/fdroiddata"
|
glab="glab --repo fdroid/fdroiddata"
|
||||||
|
function retry {
|
||||||
|
while output=$("$@"); [[ $? != 0 ]]; do
|
||||||
|
echo $output | grep -q "Source branch does not exist" && break
|
||||||
|
echo $output | grep -q "this merge request has already been merged" && break
|
||||||
|
continue
|
||||||
|
done
|
||||||
|
echo $output
|
||||||
|
}
|
||||||
|
|
||||||
echo "Rebasing..."
|
echo "Rebasing..."
|
||||||
$glab mr rebase $mr --skip-ci
|
retry $glab mr rebase $mr --skip-ci
|
||||||
|
|
||||||
echo "Merging..."
|
echo "Merging..."
|
||||||
while $glab mr merge $mr --auto-merge=false --rebase --yes; [[ $? != 0 ]]; do
|
retry $glab mr merge $mr --auto-merge=false --rebase --yes
|
||||||
continue
|
|
||||||
done
|
|
||||||
|
|
||||||
echo "Canceling pipelines..."
|
echo "Canceling pipelines..."
|
||||||
merged_commit=$($glab mr view $mr -F json | jq -r 'if .squash then .squash_commit_sha else .sha end')
|
merged_commit=$(retry $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)[]')
|
head_pipelines=$(retry $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
|
for pipeline in $head_pipelines; do
|
||||||
glab api --method POST --silent projects/:id/pipelines/$pipeline/cancel
|
retry glab api --method POST --silent projects/:id/pipelines/$pipeline/cancel
|
||||||
done
|
done
|
||||||
|
|
||||||
echo "Done!"
|
echo "Done!"
|
||||||
|
@ -5,15 +5,23 @@ set -e
|
|||||||
cd "$(dirname "$(dirname "${BASH_SOURCE[0]}")")"
|
cd "$(dirname "$(dirname "${BASH_SOURCE[0]}")")"
|
||||||
|
|
||||||
glab="glab --repo fdroid/fdroiddata"
|
glab="glab --repo fdroid/fdroiddata"
|
||||||
mr_list=$($glab mr list --author checkupdates-bot --per-page 100 -F json | jq -r 'map(.iid)[]')
|
function retry {
|
||||||
|
while output=$("$@"); [[ $? != 0 ]]; do
|
||||||
|
continue
|
||||||
|
done
|
||||||
|
echo $output
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "Fecthing MR list..."
|
||||||
|
mr_list=$(retry $glab mr list --author checkupdates-bot --per-page 100 -F json | jq -r 'map(.iid)[]')
|
||||||
for mr in $mr_list; do
|
for mr in $mr_list; do
|
||||||
mr_stat=$($glab mr view $mr -F json)
|
mr_stat=$(retry $glab mr view $mr -F json)
|
||||||
if [[ $(echo $mr_stat | jq -r '.labels | map(. == "fdroid-bot") | any') == "false" ]]; then
|
if [[ $(echo $mr_stat | jq -r '.labels | map(. == "fdroid-bot") | any') == "false" ]]; then
|
||||||
$glab mr update $mr --label "fdroid-bot"
|
retry $glab mr update $mr --label "fdroid-bot"
|
||||||
fi
|
fi
|
||||||
draft=$(echo $mr_stat | jq -r '.draft')
|
draft=$(echo $mr_stat | jq -r '.draft')
|
||||||
if [[ $(echo $mr_stat | jq -r '.title | test("bot: Update CurrentVersion of .*")') == "true" && $draft == "false" ]]; then
|
if [[ $(echo $mr_stat | jq -r '.title | test("bot: Update CurrentVersion of .*")') == "true" && $draft == "false" ]]; then
|
||||||
$glab mr update $mr --draft
|
retry $glab mr update $mr --draft
|
||||||
draft="true"
|
draft="true"
|
||||||
fi
|
fi
|
||||||
if [[ $(echo $mr_stat | jq -r '.pipeline.status == "success"') == "true" && $draft == "false" ]]; then
|
if [[ $(echo $mr_stat | jq -r '.pipeline.status == "success"') == "true" && $draft == "false" ]]; then
|
||||||
|
Loading…
x
Reference in New Issue
Block a user