fix(ci): cap core shard checkout stalls

This commit is contained in:
Vincent Koc
2026-04-16 12:35:38 -07:00
parent 2285429aa2
commit 781b1de921

View File

@@ -648,20 +648,51 @@ jobs:
matrix: ${{ fromJson(needs.preflight.outputs.checks_node_core_test_matrix) }}
steps:
- name: Checkout
id: checkout
uses: actions/checkout@v6
timeout-minutes: 2
continue-on-error: true
with:
persist-credentials: false
submodules: false
shell: bash
env:
CHECKOUT_REPO: ${{ github.repository }}
CHECKOUT_SHA: ${{ github.sha }}
CHECKOUT_TOKEN: ${{ github.token }}
run: |
set -euo pipefail
- name: Checkout (retry)
if: steps.checkout.outcome == 'failure'
uses: actions/checkout@v6
with:
persist-credentials: false
submodules: false
workdir="$GITHUB_WORKSPACE"
auth_header="$(printf 'x-access-token:%s' "$CHECKOUT_TOKEN" | base64 | tr -d '\n')"
reset_checkout_dir() {
mkdir -p "$workdir"
find "$workdir" -mindepth 1 -maxdepth 1 -exec rm -rf {} +
}
checkout_attempt() {
local attempt="$1"
reset_checkout_dir
git init "$workdir" >/dev/null
git config --global --add safe.directory "$workdir"
git -C "$workdir" remote add origin "https://github.com/${CHECKOUT_REPO}"
git -C "$workdir" config gc.auto 0
timeout --signal=TERM 30s git -C "$workdir" \
-c protocol.version=2 \
-c "http.https://github.com/.extraheader=AUTHORIZATION: basic ${auth_header}" \
fetch --no-tags --prune --no-recurse-submodules --depth=1 origin \
"+${CHECKOUT_SHA}:refs/remotes/origin/ci-target"
git -C "$workdir" checkout --force --detach "$CHECKOUT_SHA"
echo "checkout attempt ${attempt}/2 succeeded"
}
for attempt in 1 2; do
if checkout_attempt "$attempt"; then
exit 0
fi
echo "checkout attempt ${attempt}/2 failed"
sleep $((attempt * 5))
done
echo "checkout failed after 2 attempts" >&2
exit 1
- name: Setup Node environment
uses: ./.github/actions/setup-node-env