ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

open-code-review 在 GitHub Actions 中如何用 GitHub App 身份发布评审评论?

open-code-review 在 GitHub Actions 中如何用 GitHub App 身份发布评审评论? open-code-review 在 GitHub Actions 中如何用 GitHub App 身份发布评审评论【免费下载链接】open-code-reviewFast, efficient, battle-tested at Alibabas scale. Hybrid architecture code review tool: deterministic pipelines LLM Agent, precise line-level comments, built-in multi-language ruleset (NPE, thread-safety, XSS, SQL injection), OpenAI Anthropic compatible.项目地址: https://gitcode.com/GitHub_Trending/op/open-code-review把 open-code-reviewOCR接入 GitHub Actions 后评审评论默认由内置的GITHUB_TOKEN发布在 PR 里显示为github-actions[bot]。如果你希望评论以自建 GitHub App 的身份例如OpenCodeReview Bot出现在 PR 上需要完成三件事创建 GitHub App 并授权、把 App 凭据存为仓库 secrets、在工作流中铸造 installation token 并传给可复用 action 的github_token输入。下面基于仓库中的 示例工作流、其 README 与 CI 集成文档 给出完整流程。前提一条能默认发布评论的工作流先确认基础链路已经跑通评论以github-actions[bot]身份出现再谈更换身份。把示例工作流复制进目标仓库路径相对于 open-code-review 仓库根目录mkdir -p .github/workflows cp examples/github_actions/ocr-review.yml .github/workflows/ocr-review.yml该 demo 把 checkout、安装 OCR、执行评审、发布评论、上传 artifact 全部委托给一个uses: alibaba/open-code-reviewmain步骤。在Settings → Secrets and variables → Actions配置 LLM 凭据名称类型必填说明OCR_LLM_URLSecret是LLM API 端点例如https://api.openai.com/v1/chat/completionsOCR_LLM_AUTH_TOKENSecret是LLM API 鉴权 token内部映射到环境变量OCR_LLM_TOKENOCR_LLM_MODELVariable是模型名无默认值必须显式设置OCR_LLM_USE_ANTHROPICVariable是true为 Anthropic Claudefalse为 OpenAI 兼容协议示例工作流通过${{ vars.OCR_LLM_MODEL }}读取模型名与 示例 README 的变量表一致CI 文档 的 secrets 表也把OCR_LLM_MODEL列为无默认值、必须显式设置。默认身份由 action 的github_token输入决定action.yml 中该输入的描述是 GitHub token used to post review comments默认值为${{ github.token }}。把 GitHub App 铸造出的 installation token 传给这个输入评论就会以 App 名义发出。第一步创建 GitHub App在组织或个人账号的Settings → Developer settings → GitHub Apps → New GitHub App中填写GitHub App name例如OpenCodeReview Bot这个名字将显示在每条评论旁边Webhook取消勾选 Active该场景不需要 webhookRepository permissionsPull requests: Read and write发布行内评审评论Contents: Read-only获取 diffMetadata: Read-only必需然后点Create GitHub App。第二步生成私钥并记录 App ID在 App 设置页滚到Private keys点击Generate a private key下载并妥善保存.pem文件在同页记下App ID。私钥内容稍后要整体写入 secret必须包含-----BEGIN RSA PRIVATE KEY-----与-----END RSA PRIVATE KEY-----两行不能只截取中间部分。第三步安装 App 并记录 Installation ID在 App 设置页左侧边栏点击Install App勾选 OCR 需要评审的仓库安装完成后浏览器会跳到 installations 页面URL 末尾的数字就是Installation ID文档示例URL 以12345结尾则 ID 为12345。第四步添加仓库 secrets在Settings → Secrets and variables → Actions添加Secret值GITHUB_APP_IDApp IDGITHUB_APP_PRIVATE_KEY.pem文件完整内容含 BEGIN/END 两行GITHUB_APP_INSTALLATION_ID第三步的 Installation IDCI 文档 把三者都列为必配示例 README 则标注GITHUB_APP_INSTALLATION_ID仅在 App 存在多个安装时必需。如果你的 App 装在了多个组织/账户下建议保留避免铸造 token 时指向错误的安装。第五步铸造 token 并传给 action在工作流中、uses: alibaba/open-code-reviewmain步骤之前用actions/create-github-app-token铸造 installation token再把输出接到 action 的github_token输入上- name: Get GitHub App Token id: app-token uses: actions/create-github-app-tokenmain with: app-id: ${{ secrets.GITHUB_APP_ID }} private-key: ${{ secrets.GITHUB_APP_PRIVATE_KEY }} - uses: alibaba/open-code-reviewmain with: github_token: ${{ steps.app-token.outputs.token }} llm_url: ${{ secrets.OCR_LLM_URL }} llm_auth_token: ${{ secrets.OCR_LLM_AUTH_TOKEN }} llm_model: ${{ vars.OCR_LLM_MODEL }} llm_use_anthropic: ${{ vars.OCR_LLM_USE_ANTHROPIC }}两点说明示例 README 引用的是actions/create-github-app-tokenmainCI 文档 的示例写的是v1两份文档写法不同固定版本时选一个稳定 tag 并自行锁定。如果你没有走可复用 action而是自己编写发布评论的步骤则把同一个 token 作为github-token传给actions/github-script步骤脚本主体保持你已有的发布逻辑即可CI 文档展示的即这种形式。验证评论是否来自 App 身份推一个 PR 触发工作流后按文档给出的输出判断评论署名PR 对话中的 summary 评论和 Files changed 标签页里的行内评论作者应显示为你的 App 名如OpenCodeReview Bot而不是github-actions[bot]。action 输出步骤暴露comments_total、comments_inline、comments_skipped、comments_failed和summary_comment_url五个输出。comments_failed为 0 且summary_comment_url非空说明本轮评论发布完成。summary 评论形态以下均为文档示例结果无问题时为✅ **OpenCodeReview**: No comments generated. Looks good to me.发现问题时是标题行加分类计数例如 **OpenCodeReview** found **3** issue(s) in this PR. - ✅ Successfully posted inline: 2 comment(s) - In summary (no line info): 1 comment(s)其中的 3/2/1 只是文档示例数值不是固定预期inline、summary、skipped、failed四类互斥且合计等于总数。排查与限制完全没有 summary 或评论确认 job 的permissions包含pull-requests: write且github_token没有被一个缺少相应权限范围的 token 覆盖使用 GitHub App 时App 的 Repository permissions 里必须有Pull requests: Read and write否则 App token 无法发布评论。评论落不到期望行如果 PR 在评审期间被 force-push 或更新行内发布被 GitHub 拒绝该条评论会改入 summary 正文渲染。这是 diff 漂移导致与 App 身份无关。换回默认 token 时的 checkpoint 影响如果仓库启用了checkpoint_range检查点记录在 sticky summary 评论里且该评论的作者会被校验。从自定义 App 切回默认GITHUB_TOKEN后旧 summary 评论仍归属于旧 App之后每次运行都会报author_unverified回退为全量评审直到删掉那条旧 summary 评论。信任边界传入自定义 App token 后action 无法得知该 token 属于哪个 Appcheckpoint 的作者校验会放宽为任何 GitHub 认定为 bot 的发布者信任边界实际是有写权限即可信。更多输入项发布模式sticky_summary/incremental、severity 路由、超时与重试参数见 action.yml身份配置完成后无需再改动本文任何步骤。【免费下载链接】open-code-reviewFast, efficient, battle-tested at Alibabas scale. Hybrid architecture code review tool: deterministic pipelines LLM Agent, precise line-level comments, built-in multi-language ruleset (NPE, thread-safety, XSS, SQL injection), OpenAI Anthropic compatible.项目地址: https://gitcode.com/GitHub_Trending/op/open-code-review创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表