forked from wukongdaily/RunFilesBuilder
-
Notifications
You must be signed in to change notification settings - Fork 0
51 lines (43 loc) · 1.58 KB
/
Copy pathclean-release.yml
File metadata and controls
51 lines (43 loc) · 1.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
name: Cleanup Old Releases
on:
workflow_dispatch:
inputs:
keep_days:
description: "保留最近多少天(默认 7)"
required: false
default: "7"
jobs:
cleanup_releases:
runs-on: ubuntu-latest
permissions:
contents: write # 必须有权限删除 release
steps:
- name: 安装 jq
run: |
sudo apt-get update
sudo apt-get install -y jq
- name: 删除指定天数前的 Release
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
KEEP_DAYS: ${{ github.event.inputs.keep_days }}
run: |
: "${KEEP_DAYS:=30}"
THRESHOLD="$(date -u -d "${KEEP_DAYS} days ago" '+%Y-%m-%dT%H:%M:%SZ')"
echo "阈值时间(UTC):$THRESHOLD"
RELEASE_IDS=$(gh api -X GET "repos/${GITHUB_REPOSITORY}/releases" \
--paginate -F per_page=100 \
--jq '.[] | select(.created_at < "'"$THRESHOLD"'") | .id')
if [ -z "$RELEASE_IDS" ]; then
echo "✅ 没有可删除的 Release"
exit 0
fi
echo "待删除 Release 数量:$(wc -w <<< "$RELEASE_IDS")"
for ID in $RELEASE_IDS; do
NAME=$(gh api -X GET "repos/${GITHUB_REPOSITORY}/releases/${ID}" --jq '.name')
echo "🗑 删除 Release: $NAME (ID: $ID)"
gh api -X DELETE "repos/${GITHUB_REPOSITORY}/releases/${ID}" || {
echo "⚠️ 删除失败:$ID(继续删除下一个)"
}
sleep 0.5
done
echo "🎉 Release 清理完成"