Skip to content

Commit b50d0a4

Browse files
committed
refactor(deploy): streamline IndexNow submission process and enhance error handling
1 parent 1fd46c5 commit b50d0a4

File tree

1 file changed

+18
-13
lines changed

1 file changed

+18
-13
lines changed

.github/workflows/deploy.yml

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -40,20 +40,16 @@ jobs:
4040
env:
4141
SITE_ORIGIN: https://involutionhell.vercel.app
4242
INDEXNOW_API: https://involutionhell.vercel.app/api/indexnow
43-
INDEXNOW_API_TOKEN: ${{ secrets.INDEXNOW_API_TOKEN }} # 若未启用鉴权可删
43+
INDEXNOW_API_TOKEN: ${{ secrets.INDEXNOW_API_TOKEN }}
4444
run: |
4545
set -euo pipefail
4646
47-
# 获取本次代码变更
4847
git fetch --depth=2 origin ${{ github.ref }} || true
4948
CHANGED="$(git diff --name-only HEAD~1 HEAD || true)"
50-
51-
# 过滤属于文档或页面的变更(按需调整正则)
5249
CHANGED_DOCS="$(echo "$CHANGED" | grep -E '^(app/docs/|content/docs/).*\.(mdx?|tsx?)$' || true)"
5350
5451
URLS=()
5552
56-
# 规则 1:app/docs/**/page.(md/tsx) → /docs/**
5753
while IFS= read -r f; do
5854
[ -z "$f" ] && continue
5955
if [[ "$f" =~ ^app/docs/(.*)/page\.(mdx|md|tsx|ts|jsx|js)$ ]]; then
@@ -62,7 +58,6 @@ jobs:
6258
fi
6359
done <<< "$CHANGED_DOCS"
6460
65-
# 规则 2:content/docs/**.(md|mdx) → /docs/**(若不用 MDX 直出可删掉此段)
6661
while IFS= read -r f; do
6762
[ -z "$f" ] && continue
6863
if [[ "$f" =~ ^content/docs/(.*)\.(md|mdx)$ ]]; then
@@ -72,28 +67,38 @@ jobs:
7267
fi
7368
done <<< "$CHANGED_DOCS"
7469
75-
# 去重
7670
mapfile -t URLS < <(printf "%s\n" "${URLS[@]}" | awk 'NF' | sort -u)
7771
78-
# 兜底:没有匹配就推首页
7972
if [ "${#URLS[@]}" -eq 0 ]; then
8073
URLS=("$SITE_ORIGIN/")
8174
fi
8275
8376
echo "✅ Submitting URLs to IndexNow:"
8477
printf ' - %s\n' "${URLS[@]}"
8578
86-
# 组 JSON
8779
JSON="$(jq -n --argjson arr "$(printf '%s\n' "${URLS[@]}" | jq -R . | jq -s .)" '{urlList: $arr}')"
8880
89-
# 可选鉴权
9081
AUTH_HEADER=()
9182
if [ -n "${INDEXNOW_API_TOKEN:-}" ]; then
9283
AUTH_HEADER=(-H "Authorization: Bearer ${INDEXNOW_API_TOKEN}")
9384
fi
9485
95-
# 调用你的 /api/indexnow
96-
curl -sS -X POST "$INDEXNOW_API" \
86+
echo "📡 Sending request to $INDEXNOW_API ..."
87+
RESPONSE=$(curl -sS -w "\nHTTP_STATUS=%{http_code}" -X POST "$INDEXNOW_API" \
9788
-H "Content-Type: application/json" \
9889
"${AUTH_HEADER[@]}" \
99-
-d "$JSON"
90+
-d "$JSON")
91+
92+
BODY=$(echo "$RESPONSE" | sed -e 's/HTTP_STATUS=.*//g')
93+
STATUS=$(echo "$RESPONSE" | tr -d '\n' | sed -e 's/.*HTTP_STATUS=//')
94+
95+
echo "📥 API Response Status: $STATUS"
96+
echo "📦 Response Body:"
97+
echo "$BODY"
98+
99+
if [ "$STATUS" -ge 400 ]; then
100+
echo "❌ IndexNow submission failed!"
101+
exit 1
102+
fi
103+
104+
echo "✅ IndexNow submission completed."

0 commit comments

Comments
 (0)