diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 81a841ec1..6a3465a46 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,7 +15,20 @@ jobs: - name: Checkout uses: actions/checkout@v4 with: - submodules: recursive + submodules: false + + - name: Checkout submodules (retry) + run: | + set -euo pipefail + git submodule sync --recursive + for attempt in 1 2 3 4 5; do + if git -c protocol.version=2 submodule update --init --force --depth=1 --recursive; then + exit 0 + fi + echo "Submodule update failed (attempt $attempt/5). Retrying…" + sleep $((attempt * 10)) + done + exit 1 - name: Setup Node.js if: matrix.runtime == 'node' @@ -98,7 +111,20 @@ jobs: - name: Checkout uses: actions/checkout@v4 with: - submodules: recursive + submodules: false + + - name: Checkout submodules (retry) + run: | + set -euo pipefail + git submodule sync --recursive + for attempt in 1 2 3 4 5; do + if git -c protocol.version=2 submodule update --init --force --depth=1 --recursive; then + exit 0 + fi + echo "Submodule update failed (attempt $attempt/5). Retrying…" + sleep $((attempt * 10)) + done + exit 1 - name: Select Xcode 26.1 run: | @@ -267,7 +293,20 @@ jobs: - name: Checkout uses: actions/checkout@v4 with: - submodules: recursive + submodules: false + + - name: Checkout submodules (retry) + run: | + set -euo pipefail + git submodule sync --recursive + for attempt in 1 2 3 4 5; do + if git -c protocol.version=2 submodule update --init --force --depth=1 --recursive; then + exit 0 + fi + echo "Submodule update failed (attempt $attempt/5). Retrying…" + sleep $((attempt * 10)) + done + exit 1 - name: Setup Java uses: actions/setup-java@v4