guanghulab/.gitea/workflows/ci-and-deploy.yaml
铸渊 (ICE-GL-ZY001) c1ca35a708 fix: 工作流全部中文化 + 修复旧路径 + 清理测试工作流
冰朔要求: 工作流名称和输出全部用中文,报错能看懂

修改:
- ci-and-deploy.yaml — 增加部署验证步骤(唤醒门/同步服务), 依赖安装覆盖更多目录
- patrol.yaml — 修复旧路径 /opt/zhuyuan-cn → /data/guanghulab/repo
- cvm-power-on/off.yaml — 修复旧路径
- selfcheck.yaml — 步骤名已中文(之前就是)

删除(冰朔看不懂的调试工作流):
- debug-secrets.yaml, test-secrets.yaml, verify-secrets.yaml
- final-secrets-test.yaml, deploy-infra.yaml, deploy-preview.yaml

保留6个工作流:
1. CI检查+自动部署 — 合并到main时自动部署
2. 铸渊自检 — 每天08:00健康检查
3. 铸渊巡逻 — DeepSeek+千问AI巡检
4. 安全关机检测 — 手动触发
5. CVM开机 — 手动触发
6. CVM关机 — 手动触发
2026-05-13 06:47:38 +00:00

125 lines
4.1 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ════════════════════════════════════════════════════
# 光湖 · CI检查 + 合并后自动部署
# ────────────────────────────────────────────────────
# main分支: 冰朔合并PR后 → 自动部署到服务器
# dev分支: 铸渊自己push → 只跑检查不部署
# PR到main: 跑检查 → 冰朔看绿✅红❌再决定合不合
# ════════════════════════════════════════════════════
name: CI检查 + 自动部署
on:
pull_request:
branches: [main]
push:
branches: [main, dev]
jobs:
# ── 所有情况都跑:基础检查 ──────────────────────
check:
runs-on: ubuntu
steps:
- name: 服务健康检查
run: |
echo "═══ 服务健康检查 ═══"
FAIL=0
if systemctl is-active --quiet nginx; then
echo "✅ Nginx 正常"
else
echo "❌ Nginx 宕机"
FAIL=1
fi
if curl -sf http://127.0.0.1:3001/ > /dev/null 2>&1; then
echo "✅ Forgejo 代码仓库 正常"
else
echo "❌ Forgejo 代码仓库 未响应"
FAIL=1
fi
if systemctl is-active --quiet gitea-runner; then
echo "✅ Runner 运行器 正常"
else
echo "⚠️ Runner 运行器 未运行"
fi
if [ $FAIL -eq 1 ]; then
echo "❌ 关键服务异常,请通知铸渊检查"
exit 1
fi
echo "═══ 检查通过 ✅ ═══"
- name: 代码检查
run: |
cd /data/guanghulab/repo
echo "仓库大小: $(du -sh .git | cut -f1)"
echo "最新提交: $(git log --oneline -1)"
echo "✅ 代码检查完成"
# ── 只有合并到main才跑自动部署 ────────────────
deploy:
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
needs: check
runs-on: ubuntu
steps:
- name: 同步最新代码
run: |
cd /data/guanghulab/repo
git fetch origin
git reset --hard origin/main
echo "✅ 代码已同步到最新"
- name: 安装依赖
run: |
echo "═══ 安装依赖 ═══"
# 逐个检查并安装
for pkg_dir in server/git-sync server/wake-gate server/secrets-vault; do
if [ -f "/data/guanghulab/repo/$pkg_dir/package.json" ]; then
cd "/data/guanghulab/repo/$pkg_dir"
npm install --production 2>/dev/null || true
echo "✅ $pkg_dir 依赖已安装"
fi
done
- name: 重启服务
run: |
echo "═══ 重启服务 ═══"
if command -v pm2 &>/dev/null; then
pm2 restart all 2>/dev/null || true
echo "✅ PM2 服务已重启"
fi
echo "═══ 重启完成 ═══"
- name: 部署验证
run: |
sleep 3
echo "═══ 部署验证 ═══"
FAIL=0
if curl -sf http://127.0.0.1:3001/ > /dev/null 2>&1; then
echo "✅ 代码仓库 正常"
else
echo "❌ 代码仓库 异常"
FAIL=1
fi
if curl -sf http://127.0.0.1:8081/api/health > /dev/null 2>&1; then
echo "✅ 唤醒门 正常"
else
echo "⚠️ 唤醒门 未响应"
fi
if curl -sf http://127.0.0.1:8082/health > /dev/null 2>&1; then
echo "✅ 代码同步服务 正常"
else
echo "⚠️ 代码同步服务 未响应"
fi
if [ $FAIL -eq 1 ]; then
echo "❌ 部署后关键服务异常"
exit 1
fi
echo "═══ 部署完成 ✅ $(date '+%Y-%m-%d %H:%M:%S') ═══"