mirror of
https://github.com/nolen777/eagle0.git
synced 2026-07-28 22:35:42 +00:00
* Ensure Bazel is available in self-hosted workflows * Allow Bazel CI to use Command Line Tools * Set macOS C++ deployment target for Bazel * Use Bazel macOS minimum OS flags * Raise macOS Bazel deployment target for filesystem * Ensure git-lfs is available for CI fetches * Authenticate CI LFS fetches with workflow token * Disable stale LFS hooks during CI checkout * Disable LFS filters during CI checkout * Prepare Git LFS before persistent checkout * Harden generated Bazel rc and LFS auth * Let Xcode sync skip without full Xcode * Harden Unity build cache markers * Require full Xcode for mactools sync
66 lines
1.8 KiB
Bash
Executable File
66 lines
1.8 KiB
Bash
Executable File
#!/bin/bash
|
|
# Fetch LFS files from Gitea mirror with retry.
|
|
#
|
|
# Gitea's mirror-sync API is async — the webhook fires on push but the
|
|
# actual sync may still be in progress when CI starts. Retry with backoff
|
|
# to bridge the gap.
|
|
#
|
|
# Usage:
|
|
# ./ci/github_actions/fetch_lfs.sh # full pull
|
|
# ./ci/github_actions/fetch_lfs.sh --include="path/to/*" # selective pull
|
|
|
|
set -euo pipefail
|
|
|
|
COMMON_PATHS="/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
|
|
export PATH="${COMMON_PATHS}:${PATH}"
|
|
|
|
MAX_ATTEMPTS=5
|
|
RETRY_DELAY=15
|
|
|
|
if [ -n "${GITHUB_PATH:-}" ]; then
|
|
for path in /opt/homebrew/bin /usr/local/bin; do
|
|
if [ -d "$path" ]; then
|
|
echo "$path" >> "$GITHUB_PATH"
|
|
fi
|
|
done
|
|
fi
|
|
|
|
if ! git lfs version >/dev/null 2>&1; then
|
|
if ! command -v brew >/dev/null 2>&1; then
|
|
echo "ERROR: git-lfs is unavailable, and Homebrew is not on PATH"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Installing git-lfs with Homebrew"
|
|
brew install git-lfs
|
|
fi
|
|
|
|
echo "Using git-lfs at $(command -v git-lfs)"
|
|
git lfs version
|
|
|
|
git lfs install
|
|
|
|
echo "LFS objects before pull:"
|
|
git lfs ls-files | wc -l
|
|
|
|
GIT_LFS_PULL=(git lfs pull)
|
|
if [ -n "${GITHUB_TOKEN:-}" ]; then
|
|
BASIC_AUTH=$(printf 'x-access-token:%s' "$GITHUB_TOKEN" | base64 | tr -d '\n')
|
|
GIT_LFS_PULL=(git -c "http.https://github.com/.extraheader=AUTHORIZATION: basic $BASIC_AUTH" lfs pull)
|
|
fi
|
|
|
|
for i in $(seq 1 $MAX_ATTEMPTS); do
|
|
if "${GIT_LFS_PULL[@]}" "$@"; then
|
|
echo "LFS objects after pull:"
|
|
git lfs ls-files | wc -l
|
|
exit 0
|
|
fi
|
|
if [ "$i" -lt "$MAX_ATTEMPTS" ]; then
|
|
echo "LFS pull attempt $i/$MAX_ATTEMPTS failed, retrying in ${RETRY_DELAY}s..."
|
|
sleep $RETRY_DELAY
|
|
fi
|
|
done
|
|
|
|
echo "LFS pull failed after $MAX_ATTEMPTS attempts"
|
|
exit 1
|