在 GitHub Actions 流水线中触发 Copilot 代码审查,关键一步是绕过交互式界面,直接通过编程方式调用 Copilot CLI。运行器必须获得合法授权,网络也需要畅通无阻;否则审查任务要么静默失败,要么直接返回 403 错误——这一点绝不能马虎。

配置支持 Copilot CLI 的 GitHub Actions 运行器
运行器选型很明确:直接采用 Ubuntu 22.04 或 24.04 的 GitHub 托管运行器即可。Copilot CLI 仅支持 x64 Linux 环境,Windows 或 macOS 无法运行,强行使用也是徒劳。
工作流 YAML 中需要显式声明运行器类型:runs-on: ubuntu-22.04。如果选用自托管运行器,必须通过 Actions Runner Controller(ARC)进行部署,这一点务必牢记——非 ARC 管理的自托管运行器会被 Copilot 服务直接拒绝访问。
网络配置也必须跟上。运行器出站白名单中要确保能够访问 api.githubcopilot.com、uploads.github.com 和 user-images.githubusercontent.com 这几个域名。一旦防火墙拦截,CLI 认证就会卡在“Waiting for browser…”阶段,长时间无响应。
在 Actions 工作流中安装并认证 Copilot CLI
安装与认证有两种路径,推荐第一种。
方法一:使用最新的 setup-copilot-action 动作
在 job 步骤中直接写入:- uses: actions/copilot-setup@v1。该动作会自动处理 Node.js 依赖、CLI 二进制下载以及 token 注入,比手动 curl 更省心也更稳定。
方法二:手动安装(需自行维护版本)
先执行 npm install -g @github-copilot/cli,再运行 copilot login --method=github-token --token ${{ secrets.GITHUB_TOKEN }}。这里有一个陷阱:${{ secrets.GITHUB_TOKEN }} 的默认权限不包含 Copilot 作用域。因此必须在仓库 Settings → Secrets and variables → Actions 中新建一个名为 GITHUB_TOKEN_COPILOT 的 secret,填入 Personal Access Token,scope 需包含 read:packages, delete:packages, write:packages——这三个权限缺一不可。
以编程模式运行 Copilot 代码审查
整个流程分为四步。
第一步:签出代码,进入目标目录
在 PR 触发的工作流中先把代码签出,然后切换到待审查的目录。这一步没有特别之处,属于常规操作。
第二步:执行审查命令,限定范围
copilot review --pr-number ${{ github.event.number }} --review-comment --allow-tool=git --allow-url=https://raw.githubusercontent.com
这里 --review-comment 参数非常关键——加上它,审查结果会以 PR 评论的形式发布;不加的话,结果只会输出到 stdout,不会留下任何痕迹,等于白跑一趟。
第三步:捕获退出码,判断成败
后续步骤中检查 $? 值即可。非 0 表示审查失败。但有一种特殊情况需要留意:如果 PR 中包含被排除的文件(例如 package-lock.json 或 .svg),CLI 不会报错但也无法生成评论。此时需要主动用 grep -q "No reviewable changes" 检测日志,确认是否因为这个原因。
第四步:设置超时与重试
在 step 级别添加 timeout-minutes: 8。Copilot 审查单个 PR 平均耗时 2 到 5 分钟,超过 8 分钟大概率是网络抖动或上下文加载失败。与其干等,不如果断终止,避免白白消耗 Actions 分钟数。
