Skip to content

Commit fe6aea8

Browse files
authored
Create update-worker.yml
0 parents  commit fe6aea8

File tree

1 file changed

+85
-0
lines changed

1 file changed

+85
-0
lines changed
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
name: Auto Update Worker
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
schedule:
8+
- cron: "0 1 * * *" # 每天凌晨1点自动运行
9+
workflow_dispatch: # 支持手动运行
10+
11+
permissions:
12+
contents: write
13+
14+
jobs:
15+
update:
16+
runs-on: ubuntu-latest
17+
steps:
18+
- name: 初始化仓库
19+
uses: actions/checkout@v4
20+
21+
- name: 获取当前本地版本
22+
id: get_local_version
23+
run: |
24+
echo -e "\033[34m[获取本地版本]\033[0m"
25+
if [ -f version.txt ]; then
26+
LOCAL_VERSION=$(cat version.txt)
27+
echo "当前本地版本: $LOCAL_VERSION"
28+
else
29+
echo "首次同步,没有本地版本。"
30+
LOCAL_VERSION=""
31+
fi
32+
echo "LOCAL_VERSION=$LOCAL_VERSION" >> $GITHUB_ENV
33+
34+
- name: 获取最新 Release 信息
35+
id: get_release
36+
run: |
37+
echo -e "\033[34m[获取最新 Release]\033[0m"
38+
API_URL="https://api.github.com/repos/bia-pain-bache/BPB-Worker-Panel/releases"
39+
RESPONSE=$(curl -s "$API_URL")
40+
LATEST_RELEASE=$(echo "$RESPONSE" | jq -r '.[0]')
41+
TAG_NAME=$(echo "$LATEST_RELEASE" | jq -r '.tag_name')
42+
DOWNLOAD_URL=$(echo "$LATEST_RELEASE" | jq -r '.assets[] | select(.name == "worker.zip") | .browser_download_url')
43+
44+
if [ -z "$DOWNLOAD_URL" ] || [ "$DOWNLOAD_URL" == "null" ]; then
45+
echo -e "\033[31m未找到 worker.zip,退出!\033[0m"
46+
exit 1
47+
fi
48+
49+
echo "最新版本号: $TAG_NAME"
50+
echo "DOWNLOAD_URL=$DOWNLOAD_URL" >> $GITHUB_ENV
51+
echo "TAG_NAME=$TAG_NAME" >> $GITHUB_ENV
52+
53+
- name: 判断是否需要更新
54+
id: check_update
55+
run: |
56+
echo -e "\033[34m[判断是否需要更新]\033[0m"
57+
if [ "$LOCAL_VERSION" = "$TAG_NAME" ]; then
58+
echo -e "\033[32m已经是最新版本,无需更新。\033[0m"
59+
echo "UPDATE_NEEDED=false" >> $GITHUB_ENV
60+
else
61+
echo -e "\033[33m发现新版本,需要更新!\033[0m"
62+
echo "UPDATE_NEEDED=true" >> $GITHUB_ENV
63+
fi
64+
65+
- name: 如果需要,清理旧文件并下载新版本
66+
if: env.UPDATE_NEEDED == 'true'
67+
run: |
68+
echo -e "\033[34m[清理旧文件]\033[0m"
69+
rm -rf ./*
70+
echo -e "\033[34m[下载最新 worker.zip]\033[0m"
71+
wget -O worker.zip "$DOWNLOAD_URL"
72+
echo -e "\033[34m[解压 worker.zip]\033[0m"
73+
unzip worker.zip
74+
echo -e "\033[34m[删除 worker.zip]\033[0m"
75+
rm worker.zip
76+
echo -e "\033[34m[记录新版本号]\033[0m"
77+
echo "$TAG_NAME" > version.txt
78+
79+
- name: 提交更改
80+
if: env.UPDATE_NEEDED == 'true'
81+
uses: stefanzweifel/git-auto-commit-action@v5
82+
with:
83+
commit_message: "🔄 自动同步最新 Worker 版本:${{ env.TAG_NAME }}"
84+
commit_author: "github-actions[bot] <github-actions[bot]@users.noreply.github.com>"
85+
push_options: --force

0 commit comments

Comments
 (0)