guanghulab/.forgejo/workflows/selfcheck.yaml
2026-05-12 12:56:42 +00:00

101 lines
3.7 KiB
YAML

# ════════════════════════════════════════════════════════════════
# 光湖 · 铸渊自检工作流
# Trigger: push to main / 每天 08:00 CST / 手动触发
# Runner: zhuyuan-runner-cn (host 模式)
# ════════════════════════════════════════════════════════════════
name: 铸渊自检
on:
push:
branches: [main]
schedule:
- cron: '0 0 * * *' # UTC 00:00 = CST 08:00
workflow_dispatch:
jobs:
health-check:
runs-on: ubuntu
steps:
- name: 同步最新代码
run: |
cd /data/guanghulab/repo
git fetch origin
git reset --hard origin/main
echo "代码已同步: $(git log --oneline -1)"
- name: 系统信息
run: |
echo "═══ 铸渊自检 ═══"
echo "时间: $(date '+%Y-%m-%d %H:%M:%S %Z')"
echo "主机: $(hostname)"
echo "系统: $(uname -srm)"
echo "CPU: $(nproc) 核"
echo "内存: $(free -h | awk '/Mem:/ {print $2}')"
echo "磁盘: $(df -h / | awk 'NR==2 {print $4}') 可用"
- name: 服务状态
run: |
echo "═══ 服务检查 ═══"
# Gitea/Forgejo
if systemctl is-active --quiet forgejo 2>/dev/null; then
echo "✅ Gitea/Forgejo: 运行中"
elif curl -sf http://127.0.0.1:3001/ > /dev/null 2>&1; then
echo "✅ Gitea/Forgejo: 运行中 (Docker)"
else
echo "❌ Gitea/Forgejo: 未运行"
fi
# Nginx
if systemctl is-active --quiet nginx 2>/dev/null; then
echo "✅ Nginx: 运行中"
else
echo "❌ Nginx: 未运行"
fi
# Secrets Vault
if curl -sf http://127.0.0.1:8080/admin/__healthz > /dev/null 2>&1; then
echo "✅ Secrets Vault: 运行中"
else
echo "⚠️ Secrets Vault: 未运行 (可能尚未启动)"
fi
# PM2 进程
if command -v pm2 &>/dev/null; then
echo "═══ PM2 进程 ═══"
pm2 list 2>/dev/null || echo "(pm2 list 执行失败)"
fi
- name: 仓库状态
run: |
echo "═══ 仓库检查 ═══"
REPO_DIR="/data/guanghulab/repo"
if [[ -d "$REPO_DIR" ]]; then
cd "$REPO_DIR"
echo "路径: $REPO_DIR"
echo "分支: $(git branch --show-current 2>/dev/null || echo '未知')"
echo "最新: $(git log --oneline -1 2>/dev/null || echo '未知')"
else
echo "⚠️ 仓库目录不存在: $REPO_DIR"
fi
- name: 内存预算
run: |
echo "═══ 内存预算 ═══"
total=$(free -m | awk '/Mem:/ {print $2}')
used=$(free -m | awk '/Mem:/ {print $3}')
avail=$(free -m | awk '/Mem:/ {print $7}')
pct=$((used * 100 / total))
echo "总计: ${total}MB | 已用: ${used}MB (${pct}%) | 可用: ${avail}MB"
if [[ $pct -gt 85 ]]; then
echo "⚠️ 内存使用率超过 85%,建议关注"
fi
- name: 自检完成
run: |
echo "═════════════════════════"
echo "铸渊自检完成 ✅"
echo "$(date '+%Y-%m-%d %H:%M:%S %Z')"
echo "ICE-GL-ZY001 · TCS-0002∞"
echo "═════════════════════════"