gitlink-cli/skills/gitlink-quality-gate/scripts/quality-gate-full.sh

81 lines
2.5 KiB
Bash
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.

#!/bin/bash
# ================================================================
# 代码质量看门人 — 全流程串联脚本
# 功能:遍历所有待审 PR执行采集 → 审查 → CI 检查 → 门禁决策
# 使用bash quality-gate-full.sh <owner> <repo>
# 环境变量DRY_RUN=true|false (默认 true)
# ================================================================
set -e
OWNER=${1:?"Usage: $0 <owner> <repo>"}
REPO=${2}
DRY_RUN=${DRY_RUN:-true}
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
OUTPUT_DIR="$SCRIPT_DIR/_output"
mkdir -p "$OUTPUT_DIR"
echo "============================================"
echo " 代码质量看门人"
echo " Target: $OWNER/$REPO"
echo " DRY_RUN: $DRY_RUN"
echo " 开始时间: $(date '+%Y-%m-%d %H:%M:%S')"
echo "============================================"
echo ""
# Phase 1: 采集待审 PR
echo "▸ Phase 1/4: PR 采集"
bash "$SCRIPT_DIR/01-collect-prs.sh" "$OWNER" "$REPO"
echo ""
# 读取待审 PR 列表
PR_LIST="$OUTPUT_DIR/prs-to-review.json"
if [ ! -f "$PR_LIST" ]; then
echo "[ERROR] 未找到 PR 列表,请先运行 Phase 1"
exit 1
fi
PR_COUNT=$(node -e "const d=require('fs').readFileSync('$PR_LIST','utf8');process.stdout.write(String(JSON.parse(d).length))" 2>/dev/null || echo "0")
if [ "$PR_COUNT" -eq 0 ]; then
echo "[INFO] 没有待审 PR流程结束"
exit 0
fi
echo "[INFO] 共 $PR_COUNT 个 PR 需要审查"
# 遍历每个 PR
for i in $(seq 0 $((PR_COUNT - 1))); do
PR_ID=$(node -e "const d=require('fs').readFileSync('$PR_LIST','utf8');const items=JSON.parse(d);process.stdout.write(String(items[$i].id))" 2>/dev/null || echo "")
if [ -z "$PR_ID" ]; then
echo "[WARN] PR #$i: 无法解析 PR ID跳过"
continue
fi
echo "--------------------------------------------"
echo " 处理 PR #$PR_ID"
echo "--------------------------------------------"
# Phase 2: 深度审查
echo "▸ Phase 2/4: 深度审查"
bash "$SCRIPT_DIR/02-deep-review.sh" "$OWNER" "$REPO" "$PR_ID"
echo ""
# Phase 3: CI 检查
echo "▸ Phase 3/4: CI 检查"
bash "$SCRIPT_DIR/03-ci-check.sh" "$OWNER" "$REPO" "$PR_ID"
echo ""
# Phase 4: 门禁决策
echo "▸ Phase 4/4: 门禁决策"
bash "$SCRIPT_DIR/04-quality-gate-decision.sh" "$OWNER" "$REPO" "$PR_ID"
echo ""
done
echo "============================================"
echo " 全流程完成"
echo " 结束时间: $(date '+%Y-%m-%d %H:%M:%S')"
echo " 处理 PR 数: $PR_COUNT"
echo " 输出目录: $OUTPUT_DIR/"
echo "============================================"