forked from zhouruizhe/gmTouringMiniApp
ci: detect claude before install + graceful fork-PR skip
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
# AI 代码审查:每次 PR 触发,用 Claude Code 调用智谱 GLM(glm-5.2) 审查 diff,
|
||||
# 并把结论评论到 PR。走 GLM 的 Anthropic 兼容端点,无需访问 Anthropic 官方。
|
||||
# 注意:来自 fork 的跨仓库 PR 会被 Gitea 隐藏密钥,无法审查——请在团队仓库内开同仓库 PR。
|
||||
name: AI Code Review
|
||||
on:
|
||||
pull_request:
|
||||
@@ -9,11 +10,10 @@ jobs:
|
||||
review:
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
# 关键:把 Claude Code 指向智谱 GLM 的 Anthropic 兼容端点(已验证可用)
|
||||
ANTHROPIC_BASE_URL: https://open.bigmodel.cn/api/anthropic
|
||||
ANTHROPIC_API_KEY: ${{ secrets.ZHIPU_API_KEY }}
|
||||
ANTHROPIC_MODEL: glm-5.2
|
||||
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC: "1" # 关闭遥测,避免访问被墙地址
|
||||
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC: "1"
|
||||
DISABLE_AUTOUPDATER: "1"
|
||||
IS_SANDBOX: "1" # CI 容器以 root 运行,需此项才能用 --dangerously-skip-permissions
|
||||
steps:
|
||||
@@ -22,20 +22,33 @@ jobs:
|
||||
env:
|
||||
REVIEW_PAT: ${{ secrets.REVIEW_PAT }}
|
||||
run: |
|
||||
if [ -z "$REVIEW_PAT" ]; then
|
||||
echo "::warning::REVIEW_PAT 为空:通常是来自 fork 的跨仓库 PR(Gitea 会隐藏密钥)。请在团队仓库内开同仓库 PR。本次跳过审查。"
|
||||
echo "SKIP_REVIEW=1" >> "$GITHUB_ENV"
|
||||
exit 0
|
||||
fi
|
||||
git clone "http://oauth2:${REVIEW_PAT}@gitea:3000/${{ gitea.repository }}.git" .
|
||||
git checkout "${{ gitea.event.pull_request.head.ref }}"
|
||||
|
||||
- name: 生成 PR diff
|
||||
if: env.SKIP_REVIEW != '1'
|
||||
run: |
|
||||
BASE="${{ gitea.event.pull_request.base.ref }}"
|
||||
git fetch origin "$BASE"
|
||||
git diff "origin/$BASE...HEAD" > pr.diff
|
||||
echo "diff 行数: $(wc -l < pr.diff)"
|
||||
|
||||
- name: 安装 Claude Code
|
||||
run: npm install -g @anthropic-ai/claude-code --registry=https://registry.npmmirror.com
|
||||
- name: 安装 Claude Code(已装则跳过)
|
||||
if: env.SKIP_REVIEW != '1'
|
||||
run: |
|
||||
if command -v claude >/dev/null 2>&1; then
|
||||
echo "claude 已存在,跳过安装"
|
||||
else
|
||||
npm install -g @anthropic-ai/claude-code --registry=https://registry.npmmirror.com
|
||||
fi
|
||||
|
||||
- name: 运行 AI 审查
|
||||
if: env.SKIP_REVIEW != '1'
|
||||
# Claude Code 会自动读取本仓库 CLAUDE.md 与 .claude/skills/*
|
||||
run: |
|
||||
claude -p "$(cat .claude/review-prompt.md)" \
|
||||
@@ -45,6 +58,7 @@ jobs:
|
||||
--max-turns 15 > review.md || true
|
||||
|
||||
- name: 把审查结论评论到 PR
|
||||
if: env.SKIP_REVIEW != '1'
|
||||
env:
|
||||
REVIEW_PAT: ${{ secrets.REVIEW_PAT }}
|
||||
API: ${{ vars.MAIN_API }}
|
||||
|
||||
Reference in New Issue
Block a user