From 5ec81ea3d087bff4678b797f4412f71f9cdfc152 Mon Sep 17 00:00:00 2001 From: root Date: Fri, 24 Apr 2026 15:09:24 +0800 Subject: [PATCH] fix: add error handling for Xray, geo, and toolchain downloads in CI --- .github/workflows/release.yml | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c21381a3..b047a97b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -132,10 +132,11 @@ jobs: XRAY_FILE="${XRAY_MAP[${{ matrix.platform }}]}" [ -z "$XRAY_FILE" ] && { echo "Unknown platform: ${{ matrix.platform }}" >&2; exit 1; } mkdir -p /tmp/xray - curl -fL -sS --retry 3 --retry-delay 5 -o "/tmp/xray/$XRAY_FILE" "${Xray_URL}${XRAY_FILE}" + curl -fL -sS --retry 3 --retry-delay 5 -o "/tmp/xray/$XRAY_FILE" "${Xray_URL}${XRAY_FILE}" || { echo "Failed to download Xray" >&2; exit 1; } cd /tmp/xray - unzip -q "$XRAY_FILE" + unzip -q "$XRAY_FILE" || { echo "Failed to unzip Xray" >&2; exit 1; } rm -f "$XRAY_FILE" + [ -f xray ] || { echo "xray binary not found after extraction" >&2; exit 1; } - name: Get cache date id: cache_date @@ -165,7 +166,17 @@ jobs: https://github.com/runetfreedom/russia-v2ray-rules-dat/releases/latest/download/geoip.dat & curl -fL -sS --retry 3 -o geosite_RU.dat \ https://github.com/runetfreedom/russia-v2ray-rules-dat/releases/latest/download/geosite.dat & - wait + FAILED=0 + for job in $(jobs -p); do wait "$job" || FAILED=1; done + if [ "$FAILED" -eq 1 ]; then + echo "One or more geo data downloads failed" >&2 + exit 1 + fi + for f in *.dat; do + if [ ! -s "$f" ]; then + echo "Geo file $f is empty" >&2; exit 1 + fi + done - name: Cache Bootlin toolchain uses: actions/cache@v4 @@ -201,8 +212,8 @@ jobs: [ -z "$TARBALL_URL" ] && { echo "Failed to locate Bootlin musl toolchain for arch=$BOOTLIN_ARCH" >&2; exit 1; } echo "Downloading: $TARBALL_URL" cd /tmp/toolchain - curl -fL -sS --retry 3 --retry-delay 5 -o "$(basename "$TARBALL_URL")" "$TARBALL_BASE/$TARBALL_URL" - tar -xf "$(basename "$TARBALL_URL")" + curl -fL -sS --retry 3 --retry-delay 5 -o "$(basename "$TARBALL_URL")" "$TARBALL_BASE/$TARBALL_URL" || { echo "Failed to download toolchain" >&2; exit 1; } + tar -xf "$(basename "$TARBALL_URL")" || { echo "Failed to extract toolchain tarball" >&2; exit 1; } TOOLCHAIN_DIR=$(find /tmp/toolchain -maxdepth 1 -type d -name "${BOOTLIN_ARCH}--musl--stable-*" | head -n1) cd - else