【分享】我是如何让github作为自动化锚点的

【分享】我是如何让github作为自动化锚点的
【分享】我是如何让github作为自动化锚点的

最近给我的web 自动化开发方案做了一点增强,让 issues 提交了以后可以自动去修复,修复好了提交一个 PR 出去,人类做一下确认是否可用即可。 但是这里主要是线性的,不采用同时开发,避免大量的需要处理代码合并问题

具体的方案代码如下

graph TD
    %% 样式定义
    classDef init fill:#3b82f6,stroke:#fff,stroke-width:2px,color:#fff;
    classDef git fill:#f97316,stroke:#fff,stroke-width:2px,color:#fff;
    classDef ai fill:#8b5cf6,stroke:#fff,stroke-width:2px,color:#fff;
    classDef build fill:#eab308,stroke:#fff,stroke-width:2px,color:#fff,color:#000;
    classDef github fill:#10b981,stroke:#fff,stroke-width:2px,color:#fff;
    classDef endNode fill:#6b7280,stroke:#fff,stroke-width:2px,color:#fff;

    %% 阶段一:准备与拉取
    Start((启动脚本)):::init --> CheckDeps[检查依赖: gh, claude, git, pnpm]:::init
    CheckDeps --> FetchIssues[从远端拉取 Bug Issues]:::init
    FetchIssues --> BuildTodo[生成待办队列 TODO.json]:::init

    %% 阶段二:串行处理队列
    BuildTodo --> QueueCheck{队列中还有\nPending Issue吗?}
    
    %% 阶段三:单个Issue处理流程
    QueueCheck -->|Yes| BranchPrep[创建/切换工作分支\nautofix/issue-N]:::git
    BranchPrep --> AIFix[Claude AI 生成修复代码]:::ai
    
    %% 构建与验证循环
    AIFix --> BuildVerify{运行 pnpm build\n验证代码}:::build
    
    BuildVerify -->|失败 Fail| RetryCheck{达到最大重试\n次数了?}:::build
    RetryCheck -->|No| AIRetry[Claude AI 根据报错\n日志进行二次修复]:::ai
    AIRetry --> BuildVerify
    RetryCheck -->|Yes| MarkFail[标记 Issue 失败\nFailed]:::endNode
    MarkFail --> QueueCheck
    
    %% Git与PR提交流程
    BuildVerify -->|成功 Pass| GitCommit[Git Commit 并\nPush 到远端分支]:::git
    GitCommit --> CheckDiff{有代码变更吗?}:::git
    CheckDiff -->|No| MarkCompleteNoPR[标记完成\n跳过PR]:::endNode
    CheckDiff -->|Yes| CreatePR[GitHub CLI 创建\nPull Request]:::github
    
    %% 后续动作
    CreatePR --> IssueComment[在原 Issue 下\n自动评论 PR 链接]:::github
    IssueComment --> MarkSuccess[标记 Issue 成功\nCompleted]:::endNode
    MarkSuccess --> QueueCheck
    MarkCompleteNoPR --> QueueCheck

    %% 阶段四:结束
    QueueCheck -->|No| GenerateReport[生成运行汇总报告]:::init
    GenerateReport --> End((结束)):::init

下面是代码

gist.github.com https://gist.github.com/huifer/7f5d853f5c94b1b2fe3267c4c35bc4a0 gistfile1.txt
#!/usr/bin/env bash
# 开发方: https://tanstackship.com/
# 拉取远端 GitHub bug issues,串行执行:claude -p 修复 → pnpm build → 通过则 commit 并标记完成。
# 
# 依赖: gh, claude, jq, git
#
# 用法:
#   ./scripts/fix-remote-bug-issues.sh --run-all     # 推荐:一次命令串行处理全部 bug issues
#   ./scripts/fix-remote-bug-issues.sh              # 拉取 issues 并串行处理全部 pending(失败继续下一条)
#   ./scripts/fix-remote-bug-issues.sh --fetch-only # 仅同步 todo JSON
此文件已被截断。 显示原始文件 github-issues-bug-autofix-for-pr
#!/usr/bin/env bash
#
# 拉取远端 bug issues,串行修复后通过 Pull Request 提交(每条 issue 一个 PR)。
# 与 fix-remote-bug-issues.sh 独立:不修改原脚本,使用独立 todo / 日志。
# 开发方: https://tanstackship.com/
# 流程(每条 issue):
#   基于 PR base 建分支 autofix/issue-N → claude -p → pnpm build
#   → commit (Fixes #N) → push → gh pr create → Issue 评论附 PR 链接
#
# 依赖: gh, claude, jq, git, curl
此文件已被截断。 显示原始文件

1 个帖子 - 1 位参与者

阅读完整话题

来源: LinuxDo 最新话题查看原文