61 lines
2.5 KiB
YAML

# ════════════════════════════════════════════════════════════════
# 光湖 · 铸渊自动巡逻
# Trigger: 每天08:00/20:00 / 手动触发 / push关键文件
# 需要: DEEPSEEK_API_KEY 和/或 QIANWEN_API_KEY (Forgejo Secrets)
# ════════════════════════════════════════════════════════════════
name: 铸渊巡逻
on:
schedule:
- cron: '0 0 * * *' # UTC 00:00 = CST 08:00
- cron: '0 12 * * *' # UTC 12:00 = CST 20:00
workflow_dispatch:
push:
paths:
- 'scripts/patrol-agent/**'
- '.gitea/workflows/patrol.yaml'
jobs:
patrol:
runs-on: ubuntu
steps:
- name: 同步代码
run: |
cd /opt/zhuyuan-cn/repo-mirror/20260509-1849/guanghulab
git fetch origin
git reset --hard origin/main
- name: 铸渊巡逻
env:
DEEPSEEK_API_KEY: ${{ secrets.DEEPSEEK_API_KEY }}
QIANWEN_API_KEY: ${{ secrets.QIANWEN_API_KEY }}
ZY_REPO_TOKEN: ${{ secrets.ZY_REPO_TOKEN }}
run: |
cd /opt/zhuyuan-cn/repo-mirror/20260509-1849/guanghulab/scripts/patrol-agent
node patrol-agent.js --once
- name: 巡逻结果
run: |
REPORT_DIR="/data/guanghulab/.runtime/patrol-reports"
LATEST=$(ls -t "$REPORT_DIR"/patrol-*.json 2>/dev/null | head -1)
if [[ -n "$LATEST" ]]; then
echo "═══════════════════════════════════════"
cat "$LATEST" | python3 -c "
import json,sys
r = json.load(sys.stdin)
print(f'状态: {r.get(\"status\",\"?\")}')
print(f'总结: {r.get(\"summary\",\"?\")}')
for i in r.get('issues',[]):
icon = '🔴' if i.get('severity')=='high' else '🟡' if i.get('severity')=='medium' else '🟢'
auto = ' [可自动修复]' if i.get('auto_fix') else ''
print(f' {icon} {i.get(\"component\")}: {i.get(\"description\")}{auto}')
for f in r.get('fix_results',[]):
print(f' 🔧 修复 {f[\"component\"]}: {f[\"result\"]}')
print(f'分析器: {r.get(\"analyzer\",\"unknown\")}')
"
echo "═══════════════════════════════════════"
else
echo "⚠️ 未生成巡检报告"
fi