Skip to content

Commit 2d71418

Browse files
committed
update git action
1 parent e78f92e commit 2d71418

5 files changed

Lines changed: 94 additions & 19 deletions

File tree

.github/workflows/build.yml

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,11 @@ jobs:
273273
- name: Checkout code
274274
uses: actions/checkout@v4
275275

276+
- name: Prepare package folder
277+
run: |
278+
mkdir -p backend/AutoBangumi
279+
cp -r backend/src backend/AutoBangumi/
280+
276281
- name: Download artifact webui
277282
uses: actions/download-artifact@v4
278283
with:
@@ -287,22 +292,23 @@ jobs:
287292
uses: actions/download-artifact@v4
288293
with:
289294
name: dist
290-
path: backend/src/dist
295+
path: backend/AutoBangumi/dist
296+
297+
- name: Copy uv file and requirements.txt
298+
run: |
299+
cp backend/uv.lock backend/AutoBangumi/
300+
cp backend/requirements.txt backend/AutoBangumi/
301+
cp backend/pyproject.toml backend/AutoBangumi/
291302
292303
- name: Create Version info via tag
293-
working-directory: ./backend/src
304+
working-directory: ./backend/AutoBangumi/src
294305
run: |
295306
echo ${{ needs.version-info.outputs.version }}
296307
echo "VERSION='${{ needs.version-info.outputs.version }}'" >> module/__version__.py
297308
298-
- name: Copy uv files
299-
run: |
300-
cp backend/uv.lock backend/src/
301-
cp backend/pyproject.toml backend/src/
302-
303309
- name: Zip app
304310
run: |
305-
cd backend && zip -r app-v${{ needs.version-info.outputs.version }}.zip src
311+
cd backend && zip -r app-v${{ needs.version-info.outputs.version }}.zip AutoBangumi
306312
307313
- name: Generate Release info
308314
id: release-info

backend/src/module/api/program.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -176,12 +176,13 @@ async def update_program(download_url: str):
176176
from module.utils.environment import is_docker_environment
177177

178178
if not is_docker_environment():
179-
raise HTTPException(
180-
status_code=400,
181-
detail={
182-
"msg_en": "Update only supported in Docker environment.",
183-
"msg_zh": "更新功能仅支持 Docker 环境。",
184-
},
179+
return u_response(
180+
ResponseModel(
181+
status=False,
182+
status_code=400,
183+
msg_en="Update only supported in Docker environment.",
184+
msg_zh="更新功能仅支持 Docker 环境。",
185+
)
185186
)
186187

187188
# 导入更新器

backend/src/module/update/docker_updater.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -323,10 +323,8 @@ async def update(self, download_url: str) -> dict:
323323
def force_restart(self):
324324
"""强制重启容器(退出进程让 Docker 重启)"""
325325
logger.info("[DockerUpdater] Forcing container restart")
326-
327-
# 在 Docker 环境中,退出主进程会让 Docker 重启容器
326+
# 在 Docker 环境中,.sh 有监控进程会自动重启
328327
import sys
329-
330328
sys.exit(0)
331329

332330

entrypoint.sh

100644100755
Lines changed: 56 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,67 @@
33

44
umask ${UMASK}
55

6+
# 全局控制变量
7+
SHOULD_STOP=false
8+
PID_FILE="/tmp/autobangumi.pid"
9+
10+
# 信号处理函数
11+
cleanup() {
12+
echo "收到停止信号,正在清理..."
13+
SHOULD_STOP=true
14+
if [ -f "$PID_FILE" ]; then
15+
pid=$(cat "$PID_FILE")
16+
if [ -n "$pid" ]; then
17+
echo "正在停止应用进程 $pid..."
18+
kill -TERM "$pid" 2>/dev/null
19+
sleep 5
20+
# 如果进程仍在运行,强制终止
21+
if kill -0 "$pid" 2>/dev/null; then
22+
echo "强制终止应用进程 $pid..."
23+
kill -KILL "$pid" 2>/dev/null
24+
fi
25+
fi
26+
rm -f "$PID_FILE"
27+
fi
28+
}
29+
30+
# 设置信号捕获
31+
trap cleanup SIGTERM SIGINT SIGUSR1
32+
633
if [ -f /config/bangumi.json ]; then
7-
mv /config/bangumi.json /app/data/bangumi.json
34+
mv /config/bangumi.json /app/data/bangumi.json
835
fi
936

1037
groupmod -o -g "${PGID}" ab
1138
usermod -o -u "${PUID}" ab
1239

1340
chown ab:ab -R /app /home/ab
1441

15-
exec su-exec "${PUID}:${PGID}" ${VENV_PATH}/bin/python main.py
42+
# 热更新重启循环
43+
while [ "$SHOULD_STOP" != "true" ]; do
44+
echo "启动 Auto_Bangumi 应用..."
45+
su-exec "${PUID}:${PGID}" ${VENV_PATH}/bin/python main.py &
46+
app_pid=$!
47+
echo $app_pid > "$PID_FILE"
48+
49+
# 等待应用结束
50+
wait $app_pid
51+
exit_code=$?
52+
rm -f "$PID_FILE"
53+
54+
# 根据退出码决定是否重启
55+
if [ "$SHOULD_STOP" = "true" ]; then
56+
echo "容器正在停止..."
57+
break
58+
elif [ $exit_code -eq 0 ]; then
59+
echo "应用正常退出,2秒后重启(热更新)..."
60+
sleep 2
61+
else
62+
echo "应用异常退出 (退出码: $exit_code),停止容器"
63+
exit $exit_code
64+
fi
65+
done
66+
67+
echo "Auto_Bangumi 容器已停止"
68+
exit 0
69+

entrypoint.sh.backup

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#!/bin/bash
2+
# shellcheck shell=bash
3+
4+
umask ${UMASK}
5+
6+
if [ -f /config/bangumi.json ]; then
7+
mv /config/bangumi.json /app/data/bangumi.json
8+
fi
9+
10+
groupmod -o -g "${PGID}" ab
11+
usermod -o -u "${PUID}" ab
12+
13+
chown ab:ab -R /app /home/ab
14+
15+
exec su-exec "${PUID}:${PGID}" ${VENV_PATH}/bin/python main.py
16+

0 commit comments

Comments
 (0)