fix CI: move Python deps + reranker test to systemd ExecStartPre
Some checks failed
Deploy API Server / build-and-deploy (push) Failing after 8s

Runner container lacks Python 3.11, so pip install and self-test
now run as ExecStartPre in zhixi-worker.service on the host.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
WangDL 2026-05-20 16:25:52 +08:00
parent 9c8bd59620
commit e0110fd8f8
2 changed files with 38 additions and 23 deletions

View File

@ -93,31 +93,16 @@ jobs:
rsync -av --delete --exclude='.env' --exclude='__pycache__' \ rsync -av --delete --exclude='.env' --exclude='__pycache__' \
/tmp/api-server/rag-worker/ "$WORKER_DIR/" /tmp/api-server/rag-worker/ "$WORKER_DIR/"
# Install any new Python dependencies # Copy service file and reload
/usr/bin/python3.11 -m pip install -r "$WORKER_DIR/requirements.txt" \ cp "$WORKER_DIR/zhixi-worker.service" /etc/systemd/system/
-i https://mirrors.tencentyun.com/pypi/simple 2>&1 | tail -3
# Reload systemd and restart worker
systemctl daemon-reload systemctl daemon-reload
systemctl restart zhixi-worker systemctl restart zhixi-worker
sleep 3 sleep 8
systemctl is-active zhixi-worker && echo "[deploy] zhixi-worker restarted OK" systemctl is-active zhixi-worker && echo "[deploy] zhixi-worker active OK" || {
echo "[deploy] zhixi-worker FAILED, checking logs:"
# Test reranker journalctl -u zhixi-worker --no-pager -n 30
cd "$WORKER_DIR" exit 1
/usr/bin/python3.11 -c " }
import asyncio
from reranker import rerank
async def t():
r = await rerank('什么是主动回忆', [
'主动回忆是一种高效的学习策略,通过主动从记忆中提取信息来强化神经连接',
'苹果是一种常见的水果富含维生素C',
'间隔重复和主动回忆结合使用效果更佳',
], top_n=2)
for x in r:
print(f'[rerank-test] score={x[\"score\"]:.4f} text={x[\"text\"][:40]}')
asyncio.run(t())
" && echo "[deploy] Reranker test OK"
- name: Health check - name: Health check
run: | run: |

View File

@ -0,0 +1,30 @@
[Unit]
Description=ZhiXi RAG Worker
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/zhixi/backend/rag-worker
Environment="PYTHONUNBUFFERED=1"
EnvironmentFile=/opt/zhixi/backend/rag-worker/.env
# Install deps and self-test before starting main loop
ExecStartPre=/usr/bin/python3.11 -m pip install -q -r /opt/zhixi/backend/rag-worker/requirements.txt -i https://mirrors.tencentyun.com/pypi/simple
ExecStartPre=/usr/bin/python3.11 -c "
import asyncio, sys
from reranker import rerank
async def t():
r = await rerank('测试', ['这是测试文本', '无关内容'], top_n=1)
if not r: raise RuntimeError('reranker returned empty')
print(f'[self-test] reranker OK, score={r[0][\"score\"]:.4f}')
asyncio.run(t())
print('[self-test] all checks passed')
"
ExecStart=/usr/bin/python3.11 -u main.py
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target