Skip to content

Commit 0447117

Browse files
Refactor GitHub Actions to use token for API calls
1 parent 374f952 commit 0447117

1 file changed

Lines changed: 23 additions & 7 deletions

File tree

.github/workflows/update-cw2-releases.yml

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)