@@ -22,25 +22,41 @@ jobs:
2222
2323 - name : Fetch latest release and alpha version of Class Widgets 2
2424 id : fetch_versions
25+ env :
26+ GH_TOKEN : ${{ secrets.GITHUB_TOKEN }}
2527 run : |
2628 REPO_OWNER="RinLit-233-shiroko"
2729 REPO_NAME="Class-Widgets-2"
2830 API_URL="https://api.github.com/repos/$REPO_OWNER/$REPO_NAME/releases"
2931
30- # 获取正式版(release)
31- VERSION_RELEASE=$(curl -s "$API_URL" | jq -r '[.[] | select(.prerelease == false)][0].tag_name')
32- URL_RELEASE=$(curl -s "$API_URL" | jq -r '[.[] | select(.prerelease == false)][0].assets[] | select(.name | test("Windows")) | .browser_download_url' | head -n 1)
32+ # 1. 一次性获取所有 Release 数据,并带上 Token 避免频率限制
33+ RESPONSE=$(curl -s -H "Authorization: token $GH_TOKEN" "$API_URL")
34+
35+ # 检查响应是否为有效数组
36+ if ! echo "$RESPONSE" | jq -e 'if type == "array" then . else empty end' > /dev/null; then
37+ echo "Error: API returned invalid data or error message."
38+ echo "$RESPONSE"
39+ exit 1
40+ fi
41+
42+ # 2. 从响应中提取数据 (使用 jq 的 map 过滤)
43+ # 正式版
44+ RELEASE_DATA=$(echo "$RESPONSE" | jq -c '[.[] | select(.prerelease == false)][0]')
45+ VERSION_RELEASE=$(echo "$RELEASE_DATA" | jq -r '.tag_name // ""')
46+ URL_RELEASE=$(echo "$RELEASE_DATA" | jq -r '.assets[] | select(.name | test("Windows")) | .browser_download_url' | head -n 1)
3347
34- # 获取测试版(alpha)
35- VERSION_ALPHA=$(curl -s "$API_URL" | jq -r '[.[] | select(.prerelease == true)][0].tag_name')
36- URL_ALPHA=$(curl -s "$API_URL" | jq -r '[.[] | select(.prerelease == true)][0].assets[] | select(.name | test("Windows")) | .browser_download_url' | head -n 1)
48+ # 测试版
49+ ALPHA_DATA=$(echo "$RESPONSE" | jq -c '[.[] | select(.prerelease == true)][0]')
50+ VERSION_ALPHA=$(echo "$ALPHA_DATA" | jq -r '.tag_name // ""')
51+ URL_ALPHA=$(echo "$ALPHA_DATA" | jq -r '.assets[] | select(.name | test("Windows")) | .browser_download_url' | head -n 1)
3752
38- # 如果 release 没有就用 alpha 的版本和链接
53+ # 3. 兜底逻辑
3954 if [ -z "$VERSION_RELEASE" ] || [ "$VERSION_RELEASE" = "null" ]; then
4055 VERSION_RELEASE="$VERSION_ALPHA"
4156 URL_RELEASE="$URL_ALPHA"
4257 fi
4358
59+ # 4. 写入环境变量
4460 echo "VERSION_RELEASE=$VERSION_RELEASE" >> $GITHUB_ENV
4561 echo "URL_RELEASE=$URL_RELEASE" >> $GITHUB_ENV
4662 echo "VERSION_ALPHA=$VERSION_ALPHA" >> $GITHUB_ENV
0 commit comments