From 7645b072e70aa7a5ee7bb3e38735e66b822d8321 Mon Sep 17 00:00:00 2001 From: WaterWhisperer Date: Thu, 1 Oct 2026 22:07:21 +0800 Subject: [PATCH] Retry release-server checksum failures --- action.yml | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/action.yml b/action.yml index 8e55e3f..aee6853 100644 --- a/action.yml +++ b/action.yml @@ -89,7 +89,22 @@ runs: shell: bash - name: rustup toolchain install ${{steps.parse.outputs.toolchain}} - run: rustup toolchain install ${{steps.parse.outputs.toolchain}}${{steps.flags.outputs.targets}}${{steps.flags.outputs.components}} --profile minimal${{steps.flags.outputs.downgrade}} --no-self-update --force-non-host + run: | + log=$(mktemp) + trap 'rm -f "$log"' EXIT + for attempt in 1 2 3 4 5; do + if rustup toolchain install ${{steps.parse.outputs.toolchain}}${{steps.flags.outputs.targets}}${{steps.flags.outputs.components}} --profile minimal${{steps.flags.outputs.downgrade}} --no-self-update --force-non-host 2>&1 | tee "$log"; then + break + else + status=$? + fi + if [[ $attempt == 5 ]] || ! grep -Fq 'checksum failed for ' "$log" \ + || ! grep -Fq 'this is likely due to an ongoing update of the official release server' "$log"; then + exit "$status" + fi + echo "Retrying rustup toolchain install in 30 seconds (retry $attempt of 4)" >&2 + sleep 30 + done env: RUSTUP_PERMIT_COPY_RENAME: 1 shell: bash