ci: retry pacman syncs and reset host pacman.conf before build
Tests / tests (push) Successful in 5m7s

Run 131 failed at 'pacman -Syu archiso jq' because the gateway
(192.168.1.1) intermittently drops UDP/53: cachyos.db and chaotic-aur.db
lookups hit libalpm's 10s resolve timeout while core/extra survived on
resolved's cache.

- build-iso: reset the host /etc/pacman.conf to stock core/extra first
  (tests.yaml leaves [cachyos]/[chaotic-aur] behind, and mkarchiso reads
  the profile's pacman.conf anyway), pre-warm mirror hostnames in the
  resolver cache, then retry pacman -Syu 5x with backoff.
- tests: wrap all three pacman -Syu calls in the same retry loop.

DNS-side redundancy was added on the runner separately (networkd drop-in
adds 1.1.1.1/8.8.8.8 next to the gateway).
This commit is contained in:
alvinlollo
2026-10-07 11:14:28 +11:00
parent a6c99b72d0
commit 0fbec83573
2 changed files with 101 additions and 4 deletions
+45 -3
View File
@@ -36,7 +36,23 @@ jobs:
rm -f /var/lib/pacman/sync/cachyos* /var/lib/pacman/sync/chaotic*
- name: Install prerequisites
run: pacman -Syu --noconfirm --needed shellcheck yamllint
run: |
# The gateway intermittently drops UDP/53 (it failed build run 131
# at the equivalent step); retry with backoff instead of dying on
# the first bad DNS burst.
synced=0
for try in 1 2 3 4 5; do
if pacman -Syu --noconfirm --needed shellcheck yamllint; then
synced=1
break
fi
echo "⚠️ pacman -Syu failed (attempt $try/5), retrying in $(( try * 15 ))s..." >&2
sleep $(( try * 15 ))
done
if [ "$synced" -ne 1 ]; then
echo "❌ pacman -Syu failed after 5 attempts — giving up" >&2
exit 1
fi
- name: Set up CachyOS repo
run: |
@@ -54,7 +70,20 @@ jobs:
printf '\n[cachyos]\nInclude = /etc/pacman.d/cachyos-mirrorlist\n' \
>> /etc/pacman.conf
pacman -Syu --noconfirm --needed
# Retry: gateway drops UDP/53 in bursts (see run 131)
synced=0
for try in 1 2 3 4 5; do
if pacman -Syu --noconfirm --needed; then
synced=1
break
fi
echo "⚠️ pacman -Syu failed (attempt $try/5), retrying in $(( try * 15 ))s..." >&2
sleep $(( try * 15 ))
done
if [ "$synced" -ne 1 ]; then
echo "❌ pacman -Syu failed after 5 attempts — giving up" >&2
exit 1
fi
- name: Set up chaotic-aur repo
run: |
@@ -65,7 +94,20 @@ jobs:
printf '\n[chaotic-aur]\nInclude = /etc/pacman.d/chaotic-mirrorlist\n' \
>> /etc/pacman.conf
pacman -Syu --noconfirm --needed
# Retry: gateway drops UDP/53 in bursts (see run 131)
synced=0
for try in 1 2 3 4 5; do
if pacman -Syu --noconfirm --needed; then
synced=1
break
fi
echo "⚠️ pacman -Syu failed (attempt $try/5), retrying in $(( try * 15 ))s..." >&2
sleep $(( try * 15 ))
done
if [ "$synced" -ne 1 ]; then
echo "❌ pacman -Syu failed after 5 attempts — giving up" >&2
exit 1
fi
- name: Lint shell scripts with ShellCheck
run: |