From 47951001bdbe0c73548a2a26077b0e4cfc5d65d2 Mon Sep 17 00:00:00 2001 From: root Date: Wed, 13 May 2026 14:32:17 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=8F=8C=E7=BA=BFCI=20=E2=80=94=20main?= =?UTF-8?q?=E9=9C=80=E5=86=B0=E6=9C=94=E5=90=88=E5=B9=B6+=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E9=83=A8=E7=BD=B2=20/=20dev=E9=93=B8=E6=B8=8A?= =?UTF-8?q?=E8=87=AA=E7=94=B1=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .forgejo/workflows/ci-and-deploy.yaml | 98 +++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 .forgejo/workflows/ci-and-deploy.yaml diff --git a/.forgejo/workflows/ci-and-deploy.yaml b/.forgejo/workflows/ci-and-deploy.yaml new file mode 100644 index 0000000..4d02fb5 --- /dev/null +++ b/.forgejo/workflows/ci-and-deploy.yaml @@ -0,0 +1,98 @@ +# ════════════════════════════════════════════════════ +# 光湖 · 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: | + if [ -f /data/guanghulab/repo/server/secrets-vault/package.json ]; then + cd /data/guanghulab/repo/server/secrets-vault + npm install --production 2>/dev/null || true + echo "✅ 依赖已安装" + fi + + - name: 重启服务 + run: | + echo "═══ 重启服务 ═══" + if command -v pm2 &>/dev/null; then + pm2 restart all 2>/dev/null || true + echo "✅ 服务已重启" + fi + echo "═══ 重启完成 ═══" + + - name: 部署验证 + run: | + sleep 3 + if curl -sf http://127.0.0.1:3001/ > /dev/null 2>&1; then + echo "✅ Forgejo 正常" + else + echo "⚠️ Forgejo 异常" + fi + echo "═══ 部署完成 ✅ $(date '+%Y-%m-%d %H:%M:%S') ═══"