diff --git a/build_scripts/base/01-packages.sh b/build_scripts/base/01-packages.sh index c9ec968f..d024f6f3 100755 --- a/build_scripts/base/01-packages.sh +++ b/build_scripts/base/01-packages.sh @@ -153,7 +153,7 @@ TERRA_PACKAGES=( # Fedora Tailscale is usually behind TAILSCALE=(tailscale) -dnf -y install --from-repo="terra" "${TERRA_PACKAGES[@]}" +dnf-retry -y install --from-repo="terra" "${TERRA_PACKAGES[@]}" COPR_PREFIX="copr:copr.fedorainfracloud.org" diff --git a/build_scripts/shared/build-prep.sh b/build_scripts/shared/build-prep.sh index 0e00be92..bf752be0 100755 --- a/build_scripts/shared/build-prep.sh +++ b/build_scripts/shared/build-prep.sh @@ -27,5 +27,6 @@ dnf config-manager disable fedora-cisco-openh264 mkdir -p /tmp/scripts/helpers install -Dm0755 /ctx/build_scripts/shared/utils/ghcurl /tmp/scripts/helpers/ghcurl +install -Dm0755 /ctx/build_scripts/shared/utils/dnf-retry /tmp/scripts/helpers/dnf-retry echo "::endgroup::" diff --git a/build_scripts/shared/utils/dnf-retry b/build_scripts/shared/utils/dnf-retry new file mode 100755 index 00000000..0100e837 --- /dev/null +++ b/build_scripts/shared/utils/dnf-retry @@ -0,0 +1,16 @@ +#!/usr/bin/env bash +set -euo pipefail + +tries=5 +sleep=60 + +for i in $(seq 1 "${tries}"); do + if [[ ${i} -gt 1 ]]; then + # echo "[+] Command failed. Waiting for ${sleep} seconds" + sleep "${sleep}" + fi + # echo "[+] Running (try: ${i}): dnf ${*}" + dnf "${@}" && r=0 && break || r=$? +done +exit "$r" +