fix(data): 重试财经快讯瞬时连接故障 #346
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Claude PR Review | |
| # PR 打开 / reopen / 每次 push 新 commit(synchronize)时自动 review diff。 | |
| # 防邮件洪水靠三道闸而非「少触发」:① concurrency + cancel-in-progress 让同一 PR | |
| # 新 push 立刻取消上一轮;② review step 只维护**一条 sticky 总结评论** | |
| # (gh pr comment --edit-last 原地覆盖,GitHub 对编辑评论不发邮件,仅首条发一封); | |
| # ③ 不逐行贴 inline 评论。需对历史 commit 重审可去 Actions 页跑 workflow_dispatch。 | |
| # 非阻塞设计:即使 GLM 出错(API 超时、token 过期等), | |
| # 本 workflow 不会阻止 PR 合并。review 评论是锦上添花,不是门禁。 | |
| # Auth: 智谱 GLM API key 存在 GitHub Actions Secret ZHIPUAI_API_KEY | |
| # | |
| # 改编自原始 claude-review.yml——只换了底层模型为 GLM-5.2,prompt 和编排逻辑保留。 | |
| on: | |
| pull_request: | |
| types: [opened, reopened, synchronize] | |
| workflow_dispatch: | |
| inputs: | |
| pr_number: | |
| description: 手动指定 PR 编号(留空 = 用 workflow_dispatch 的当前分支) | |
| required: false | |
| # 同一 PR 新 push 立刻取消上一次 review,避免重复评论 | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.head_ref || github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| review: | |
| name: Claude · auto-review PR diff(非阻塞) | |
| runs-on: ubuntu-latest | |
| # 🔑 非阻塞关键:即使本 job 失败,也标记为成功,不卡 PR 合并 | |
| continue-on-error: true | |
| permissions: | |
| contents: read | |
| pull-requests: write | |
| issues: write | |
| id-token: write | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| # 0 = 拉全历史,让 git log / git blame / git show 有上下文(架构评审需要) | |
| fetch-depth: 0 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.12" | |
| - name: Fetch PR diff + metadata | |
| env: | |
| GH_TOKEN: ${{ github.token }} | |
| PR_NUMBER: ${{ github.event.pull_request.number || inputs.pr_number }} | |
| run: | | |
| gh pr diff "$PR_NUMBER" --color never > /tmp/pr_diff.txt | |
| echo "diff_lines=$(wc -l < /tmp/pr_diff.txt)" >> $GITHUB_OUTPUT | |
| gh pr view "$PR_NUMBER" --json title,body,headRefName,baseRefName --jq '"\(.title) | \(.headRefName) → \(.baseRefName)"' > /tmp/pr_title.txt | |
| - name: GLM-5.2 · review | |
| id: review | |
| # 内层 step 也 continue-on-error,防止 Python 抛异常 | |
| continue-on-error: true | |
| env: | |
| ZHIPUAI_API_KEY: ${{ secrets.ZHIPUAI_API_KEY }} | |
| run: python3 scripts/glm_review.py | |
| # 即使 GLM 挂了,也记录一下方便排查 | |
| - name: Log review status | |
| if: always() | |
| run: | | |
| if [ "${{ steps.review.outcome }}" = "success" ]; then | |
| echo "GLM review completed successfully" | |
| else | |
| echo "GLM review skipped or failed (non-blocking) — outcome: ${{ steps.review.outcome }}" | |
| fi | |
| - name: Post/Update sticky comment | |
| env: | |
| GH_TOKEN: ${{ github.token }} | |
| PR_NUMBER: ${{ github.event.pull_request.number || inputs.pr_number }} | |
| run: | | |
| BODY=$(cat /tmp/review_body.txt) | |
| MARKER="<!-- claude-review -->" | |
| SHA=$(git rev-parse --short HEAD) | |
| FULL_BODY="${MARKER}\nReview base: ${SHA}\n\n${BODY}" | |
| gh pr comment "$PR_NUMBER" --edit-last --create-if-none --body "$(echo -e "$FULL_BODY")" |