diff --git a/.gitea/workflows/ci-pipeline.yml b/.gitea/workflows/ci-pipeline.yml index de0a655b5..c42638cf3 100755 --- a/.gitea/workflows/ci-pipeline.yml +++ b/.gitea/workflows/ci-pipeline.yml @@ -20,6 +20,7 @@ on: default: "手动触发 - CI漏触发补跑" permissions: contents: read + pull-requests: read concurrency: group: ci-pipeline-${{ gitea.ref }} cancel-in-progress: true @@ -88,9 +89,22 @@ jobs: GITHUB_TOKEN: ${{ github.token }} run: | set -eu + # 优先用 git diff 判断 PR 改动范围(比 API 稳定) PR_NUMBER=$(echo "$GITHUB_REF" | sed 's|refs/pull/||; s|/.*||') - API_URL="${GITHUB_API_URL}/repos/${GITHUB_REPOSITORY}/pulls/${PR_NUMBER}/files?limit=300" - FILES=$(curl -s -H "Authorization: token ${GITHUB_TOKEN}" "$API_URL" | python3 -c "import sys,json; [print(f['filename']) for f in json.load(sys.stdin)]") + if command -v git >/dev/null 2>&1 && [ -d .git ]; then + FILES=$(git diff --name-only origin/develop...HEAD 2>/dev/null || true) + fi + if [ -z "${FILES:-}" ]; then + # fallback 到 API + API_URL="${GITHUB_API_URL}/repos/${GITHUB_REPOSITORY}/pulls/${PR_NUMBER}/files?limit=300" + FILES=$(curl -sf -H "Authorization: token ${GITHUB_TOKEN}" "$API_URL" | python3 -c "import sys,json; [print(f['filename']) for f in json.load(sys.stdin)]" 2>/dev/null || true) + fi + if [ -z "${FILES:-}" ]; then + echo "⚠️ 无法获取变更文件列表,保守运行完整 CI" + echo "skip_backend=false" >> $GITHUB_OUTPUT + echo "skip_frontend=false" >> $GITHUB_OUTPUT + exit 0 + fi FRONTEND_COUNT=$(echo "$FILES" | grep -c '^apps/web/' || true) BACKEND_COUNT=$(echo "$FILES" | grep -cv '^apps/web/' || true) TOTAL=$(echo "$FILES" | grep -cv '^$' || true) diff --git a/apps/web/src/pages/generate/GeneratePage.tsx b/apps/web/src/pages/generate/GeneratePage.tsx index e638e7c34..54c0863b9 100644 --- a/apps/web/src/pages/generate/GeneratePage.tsx +++ b/apps/web/src/pages/generate/GeneratePage.tsx @@ -548,10 +548,21 @@ const GeneratePage: React.FC = () => {
+

+ 🎬 确认生成 +