**Aur builder: add retry logic for yay clone to recover from GitHub 504 errors**
Some checks failed
Mark stable commit / test-unit (push) Has been cancelled
Mark stable commit / test-integration (push) Has been cancelled
Mark stable commit / test-container (push) Has been cancelled
Mark stable commit / test-e2e (push) Has been cancelled
Mark stable commit / test-virgin-user (push) Has been cancelled
Mark stable commit / test-virgin-root (push) Has been cancelled
Mark stable commit / mark-stable (push) Has been cancelled
Some checks failed
Mark stable commit / test-unit (push) Has been cancelled
Mark stable commit / test-integration (push) Has been cancelled
Mark stable commit / test-container (push) Has been cancelled
Mark stable commit / test-e2e (push) Has been cancelled
Mark stable commit / test-virgin-user (push) Has been cancelled
Mark stable commit / test-virgin-root (push) Has been cancelled
Mark stable commit / mark-stable (push) Has been cancelled
Implemented a robust retry mechanism for cloning the yay AUR helper during Arch dependency installation. The new logic retries the git clone operation for up to 5 minutes with a 20-second pause between attempts, allowing the build to proceed even when GitHub intermittently returns HTTP 504 errors. This improves the stability of Arch container builds, especially under network pressure or transient upstream outages. The yay build process now only starts once the clone step completes successfully. https://chatgpt.com/share/693b102b-fdb0-800f-9f2e-d4840f14d329
This commit is contained in:
@@ -45,8 +45,42 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
echo "[aur-builder-setup] Ensuring yay is installed for aur_builder..."
|
echo "[aur-builder-setup] Ensuring yay is installed for aur_builder..."
|
||||||
|
|
||||||
if ! "${RUN_AS_AUR[@]}" 'command -v yay >/dev/null 2>&1'; then
|
if ! "${RUN_AS_AUR[@]}" 'command -v yay >/dev/null 2>&1'; then
|
||||||
"${RUN_AS_AUR[@]}" 'cd ~ && rm -rf yay && git clone https://aur.archlinux.org/yay.git && cd yay && makepkg -si --noconfirm'
|
echo "[aur-builder-setup] yay not found – starting retry sequence for download..."
|
||||||
|
|
||||||
|
MAX_TIME=300 # 5 minutes
|
||||||
|
SLEEP_INTERVAL=20 # 20 seconds
|
||||||
|
ELAPSED=0
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
if "${RUN_AS_AUR[@]}" '
|
||||||
|
set -euo pipefail
|
||||||
|
cd ~
|
||||||
|
rm -rf yay || true
|
||||||
|
git clone https://aur.archlinux.org/yay.git yay
|
||||||
|
'; then
|
||||||
|
echo "[aur-builder-setup] yay repository cloned successfully."
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "[aur-builder-setup] git clone failed (likely 504). Retrying in ${SLEEP_INTERVAL}s..."
|
||||||
|
sleep "${SLEEP_INTERVAL}"
|
||||||
|
ELAPSED=$((ELAPSED + SLEEP_INTERVAL))
|
||||||
|
|
||||||
|
if (( ELAPSED >= MAX_TIME )); then
|
||||||
|
echo "[aur-builder-setup] ERROR: Aborted after 5 minutes of retry attempts."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Now build yay after successful clone
|
||||||
|
"${RUN_AS_AUR[@]}" '
|
||||||
|
set -euo pipefail
|
||||||
|
cd ~/yay
|
||||||
|
makepkg -si --noconfirm
|
||||||
|
'
|
||||||
|
|
||||||
else
|
else
|
||||||
echo "[aur-builder-setup] yay already installed."
|
echo "[aur-builder-setup] yay already installed."
|
||||||
fi
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user