81 lines
3.8 KiB
Bash
81 lines
3.8 KiB
Bash
if [ "$READTHEDOCS_VERSION_TYPE" != "external" ]; then
|
|
echo "Not a PR build (version type=$READTHEDOCS_VERSION_TYPE); skipping pre-run-check gate."
|
|
exit 0
|
|
fi
|
|
|
|
# Use a GitHub token if provided to raise the API rate limit (60 -> 5000
|
|
# requests/hour). Set GITHUB_TOKEN in the Read the Docs environment variables.
|
|
CURL_AUTH=()
|
|
if [ -n "$GITHUB_TOKEN" ]; then
|
|
CURL_AUTH=(-H "Authorization: Bearer $GITHUB_TOKEN")
|
|
fi
|
|
|
|
# Docs builds are now manually enabled via the 'build-docs' label.
|
|
echo "Checking for the 'build-docs' label on PR #${READTHEDOCS_VERSION_NAME}..."
|
|
LABELS=$(curl -sS "${CURL_AUTH[@]}" "https://api.github.com/repos/vllm-project/vllm/issues/${READTHEDOCS_VERSION_NAME}/labels" | python3 -c "import sys, json; print('\n'.join(l.get('name', '') for l in json.load(sys.stdin)))")
|
|
if printf '%s\n' "$LABELS" | grep -qx "build-docs"; then
|
|
echo "PR has the 'build-docs' label; continuing build."
|
|
exit 0
|
|
else
|
|
echo "PR does not have the 'build-docs' label; cancelling build."
|
|
# See https://docs.readthedocs.com/platform/latest/guides/build/skip-build.html for info on exit code
|
|
exit 183
|
|
fi
|
|
|
|
# Everything below this line is effectively disabled as a temporary measure.
|
|
echo "Checking for changes to docs-affecting files vs origin/main..."
|
|
DOCS_PATHS=(
|
|
docs/ # Actual docs content
|
|
examples/ # Examples are rendered in docs
|
|
vllm/ # API & CLI reference
|
|
requirements/test/cuda.txt # CLI reference (see docs/mkdocs/hooks/generate_argparse.py)
|
|
mkdocs.yaml # Affects build process
|
|
.readthedocs.yaml # Affects build process
|
|
requirements/docs.txt # Affects build process
|
|
requirements/docs.in # Affects build process
|
|
)
|
|
if git diff --quiet origin/main -- "${DOCS_PATHS[@]}"; then
|
|
echo "No docs-affecting files changed vs origin/main; cancelling build."
|
|
# See https://docs.readthedocs.com/platform/latest/guides/build/skip-build.html for info on exit code
|
|
exit 183
|
|
fi
|
|
echo "Docs-affecting files changed; continuing pre-run-check."
|
|
echo "Checking pre-commit/pre-run-check status..."
|
|
MAX_WAIT=300
|
|
INTERVAL=60
|
|
ELAPSED=0
|
|
while :; do
|
|
RAW=$(curl -sS "${CURL_AUTH[@]}" -w "\n%{http_code}" "https://api.github.com/repos/vllm-project/vllm/commits/${READTHEDOCS_GIT_COMMIT_HASH}/check-runs?check_name=pre-run-check&filter=latest")
|
|
HTTP_CODE=$(printf %s "$RAW" | tail -n1)
|
|
BODY=$(printf %s "$RAW" | sed '$d')
|
|
if [ "$HTTP_CODE" != "200" ]; then
|
|
echo "GitHub API returned HTTP $HTTP_CODE (likely rate-limited); skipping pre-commit/pre-run-check gate."
|
|
break
|
|
fi
|
|
STATUS=$(printf %s "$BODY" | python3 -c "import sys, json; r=json.load(sys.stdin).get(\"check_runs\",[]); print((r[0].get(\"status\") or \"\") if r else \"none\")")
|
|
CONCLUSION=$(printf %s "$BODY" | python3 -c "import sys, json; r=json.load(sys.stdin).get(\"check_runs\",[]); print((r[0].get(\"conclusion\") or \"\") if r else \"\")")
|
|
CHECK_URL=$(printf %s "$BODY" | python3 -c "import sys, json; r=json.load(sys.stdin).get(\"check_runs\",[]); print((r[0].get(\"html_url\") or \"\") if r else \"\")")
|
|
if [ "$STATUS" = "none" ]; then
|
|
echo "no pre-commit/pre-run-check found for this commit; skipping gate."
|
|
break
|
|
fi
|
|
if [ -n "$CONCLUSION" ]; then
|
|
echo "pre-commit/pre-run-check conclusion: $CONCLUSION"
|
|
if [ "$CONCLUSION" = "failure" ] || [ "$CONCLUSION" = "cancelled" ] || [ "$CONCLUSION" = "timed_out" ]; then
|
|
echo "pre-commit/pre-run-check did not pass; skipping docs build."
|
|
if [ -n "$CHECK_URL" ]; then
|
|
echo "pre-commit/pre-run-check failure reason: $CHECK_URL"
|
|
fi
|
|
exit 1
|
|
fi
|
|
break
|
|
fi
|
|
if [ "$ELAPSED" -ge "$MAX_WAIT" ]; then
|
|
echo "pre-commit/pre-run-check status=$STATUS after ${MAX_WAIT}s; skipping gate."
|
|
break
|
|
fi
|
|
echo "pre-commit/pre-run-check status=$STATUS; waiting ${INTERVAL}s..."
|
|
sleep "$INTERVAL"
|
|
ELAPSED=$((ELAPSED + INTERVAL))
|
|
done
|