feat: 双线CI — main需冰朔合并+自动部署 / dev铸渊自由操作
This commit is contained in:
parent
4c0915ec46
commit
47951001bd
98
.forgejo/workflows/ci-and-deploy.yaml
Normal file
98
.forgejo/workflows/ci-and-deploy.yaml
Normal file
@ -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') ═══"
|
||||
Loading…
x
Reference in New Issue
Block a user