diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d0c32375747..4a673b85e73 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -212,7 +212,7 @@ jobs: { check_name: "checks-fast-contracts-protocol", runtime: "node", - task: "contracts-protocol", + task: "contracts", }, ] : [], @@ -573,10 +573,8 @@ jobs: bundled) pnpm test:bundled ;; - contracts|contracts-protocol) - pnpm build + contracts) pnpm test:contracts - pnpm protocol:check ;; *) echo "Unsupported checks-fast task: $TASK" >&2 @@ -584,6 +582,72 @@ jobs: ;; esac + checks-fast-protocol: + permissions: + contents: read + name: "checks-fast-protocol" + needs: [preflight] + if: needs.preflight.outputs.run_checks_fast == 'true' + runs-on: blacksmith-16vcpu-ubuntu-2404 + timeout-minutes: 30 + steps: + - name: Checkout + shell: bash + env: + CHECKOUT_REPO: ${{ github.repository }} + CHECKOUT_SHA: ${{ github.sha }} + CHECKOUT_TOKEN: ${{ github.token }} + run: | + set -euo pipefail + + 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" || return 1 + + git -C "$workdir" checkout --force --detach "$CHECKOUT_SHA" || return 1 + test -f "$workdir/.github/actions/setup-node-env/action.yml" || return 1 + 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 + with: + install-bun: "false" + use-sticky-disk: "false" + + - name: Run protocol check + run: pnpm protocol:check + checks-node-extensions-shard: permissions: contents: read