Files
xiaoxia-saas/.gitea/workflows/code-review.yml
T
xiaoxia a75cce0a3b
CI/CD Pipeline / Validate - Type Check (mypy) (push) Successful in 1m36s
CI/CD Pipeline / Frontend Lint (push) Failing after 1m37s
CI/CD Pipeline / Frontend Unit Tests (push) Successful in 2m0s
CI/CD Pipeline / Validate - Migration (alembic) (push) Successful in 3m51s
CI/CD Pipeline / Build Staging Worker Image (push) Successful in 4m54s
CI/CD Pipeline / Build Staging Web Image (push) Failing after 4m54s
CI/CD Pipeline / Validate - Code Quality (push) Failing after 4m59s
CI/CD Pipeline / Integration Tests (push) Successful in 3m25s
CI/CD Pipeline / Unit Tests (push) Failing after 9m2s
CI/CD Pipeline / Build Staging API Image (push) Successful in 9m10s
CI/CD Pipeline / Canary Release to Production (push) Failing after 1216h51m31s
CI/CD Pipeline / Staging API Integration Tests (push) Failing after 1216h51m32s
CI/CD Pipeline / Staging E2E Tests (push) Failing after 1216h51m32s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (push) Failing after 1216h51m33s
CI/CD Pipeline / CI Gate (push) Failing after 1216h51m37s
CI/CD Pipeline / Production Browser E2E (push) Failing after 1217h0m39s
CI/CD Pipeline / Deploy Production (push) Failing after 1217h0m40s
CI/CD Pipeline / Build Production Web Image (push) Failing after 1217h0m43s
CI/CD Pipeline / Build Production Worker Image (push) Failing after 1217h0m43s
CI/CD Pipeline / Build Production API Image (push) Failing after 1217h0m43s
CI/CD Pipeline / PR Build API Image (push) Failing after 1217h0m45s
CI/CD Pipeline / PR Build Worker Image (push) Failing after 1217h0m44s
CI/CD Pipeline / Check if frontend-only change (push) Failing after 1217h0m45s
CI/CD Pipeline / ACR Image Cleanup (push) Failing after 1217h24m25s
CI/CD Pipeline / PR Build Web Image (push) Failing after 1217h33m38s
feat(ci): AI代码审查添加阻塞级判定 + 门禁控制(develop同步) (#1042)
Co-authored-by: xiaoxia <dev@xiaoxiajianji.com>
Co-committed-by: xiaoxia <dev@xiaoxiajianji.com>
2026-07-27 22:22:34 +08:00

80 lines
3.0 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.
name: AI Code Review
on:
pull_request:
types:
- opened
- synchronize
- reopened
# 同一个 PR 只跑一个 review,新的取消旧的
concurrency:
group: code-review-${{ gitea.repository }}-${{ gitea.event.pull_request.number }}
cancel-in-progress: true
jobs:
code-review:
name: AI Code Review
runs-on: ci-l2
# 跳过草稿 PR
if: ${{ !gitea.event.pull_request.draft }}
steps:
# actions/checkout 由 runner 在宿主机层面处理,不受容器网络影响
- name: Checkout code
shell: sh
env:
GITHUB_TOKEN: ${{ github.token }}
run: |
curl -sH "Authorization: token $GITHUB_TOKEN" "${GITHUB_API_URL}/repos/${GITHUB_REPOSITORY}/raw/scripts/ci/step_checkout.sh?ref=${GITHUB_SHA}" | bash
- name: Install dependencies
run: |
# 确保 python3-pip 可用(兼容不同基础镜像)
if ! python3 -m pip --version >/dev/null 2>&1; then
apt-get update -qq && apt-get install -y -qq python3-pip python3-venv >/dev/null 2>&1
fi
# 部分镜像 ensurepip 方式兜底
if ! python3 -m pip --version >/dev/null 2>&1; then
python3 -m ensurepip --upgrade 2>/dev/null || curl -sS https://bootstrap.pypa.io/get-pip.py | python3
fi
python3 -m pip install --upgrade pip
python3 -m pip install requests
- name: Run AI Code Review
env:
# Gitea 配置(自动从运行环境获取)
GITEA_API_URL: ${{ gitea.server_url }}
GITEA_TOKEN: ${{ secrets.REVIEW_GITEA_TOKEN }}
REPO_NAME: ${{ gitea.repository }}
PR_NUMBER: ${{ gitea.event.pull_request.number }}
PR_HEAD_SHA: ${{ gitea.event.pull_request.head.sha }}
# LLM 提供商: coze (扣子原生Bot) / openai (OpenAI兼容)
LLM_PROVIDER: "coze"
# 扣子模式配置(默认国内站 api.coze.cn)
LLM_BASE_URL: ${{ secrets.LLM_BASE_URL }}
LLM_API_KEY: ${{ secrets.LLM_API_KEY }}
COZE_BOT_ID: ${{ secrets.COZE_BOT_ID }}
LLM_MODEL: ${{ secrets.LLM_MODEL }}
# 可选参数
MAX_DIFF_CHARS: "30000"
LLM_TIMEOUT: "120"
run: |
python3 scripts/ci_code_review.py
# 注意:脚本退出码决定job状态
# - 有阻塞级问题 → exit 1 → job失败 → 门禁拦截
# - 无阻塞级问题/LLM异常 → exit 0 → 通过(fail-open)
- name: Report CI trace
if: always()
shell: sh
env:
AGENTLOOP_LICENSE_KEY: ${{ secrets.AGENTLOOP_LICENSE_KEY }}
run: |
STATUS="ok"
[ ${{ job.status }} = "success" ] || STATUS="error"
START_TIME=""
[ -f /tmp/ci_job_start_time ] && START_TIME=$(cat /tmp/ci_job_start_time)
python3 scripts/ci/ci_trace_report.py --service xiaoxia-saas-ci --status $STATUS --start-time "$START_TIME" || true