跳到正文
FunCoding

搜索

搜索文档、Skill 和 MCP

在 GitHub Actions 中运行

选择 GITHUB_TOKEN 或个人 PAT,配置 Copilot 请求权限与组织计费。

Copilot CLI 可在 Actions runner 上安装后用 -p 执行。官方优先推荐 GitHub Agentic Workflows,因为其默认使用 GITHUB_TOKEN 并提供适合自动化的控制;确实需要直接 CLI 步骤时,再手工设置环境和最小权限。

两种认证的差别

方式身份与费用
个人 PAT按令牌创建者身份,消耗其 Copilot seat 的额度,模型和功能由其许可决定
GITHUB_TOKEN,个人仓库按 installation 身份执行,费用归仓库所有者 seat
GITHUB_TOKEN,组织仓库直接向组织计量,不归某个用户

组织仓库需要 Allow use of Copilot CLI billed to the organization 策略。当前教程说明已开启 CLI 的组织默认启用此项,但仍应在组织 Copilot CLI 策略中核对。它独立于 seat 发放方式;集中在一个组织发许可、在其他组织工作的企业,不要求每个工作组织都重复启用许可发放。

直接计费到组织时,不考虑用户个人预算。组织可通过 cost centers 及相应预算管理,并查看组织 billing / usage 仪表盘。

GITHUB_TOKEN 示例

以下使用官方的只读提交摘要模式,runner 需满足 npm 安装的 Node.js 22+ 前提,并使用支持原生令牌认证的近期 CLI:

name: Copilot CLI example
on: [push]
permissions:
  contents: read
  copilot-requests: write
jobs:
  copilot:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
        with:
          fetch-depth: 2
      - name: Install Copilot CLI
        run: npm install -g @github/copilot
      - name: Run Copilot
        run: copilot -p "Use git show HEAD to summarize the changes in this commit" -s --allow-tool='shell(git show:*)'
        env:
          GITHUB_TOKEN: ${{ github.token }}

fetch-depth: 2 获取当前提交及父提交,供 git show 计算变更。copilot-requests: write 是模型请求所必需的权限,不由 contents: read 代替。无需额外保存 PAT secret。

非交互运行不能展示批准对话,未预先允许的动作会拒绝。示例只允许 git show,而非全部 Shell 命令。

PAT 替代方式

组织未开启该策略,或需要明确计入个人 seat 时,可建立个人账号拥有的 fine-grained PAT,授予 Account 下的 Copilot Requests。把它保存为 Actions secret,然后传给 COPILOT_GITHUB_TOKEN。

env:
  COPILOT_GITHUB_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }}

这不是 Actions 自动生成的 GITHUB_TOKEN。若同时设置多个令牌变量,还要注意 CLI 的优先级,见认证。

工作流结果与触发范围

可用 workflow_dispatch 人工触发,验证输出后再增加 schedule 或仓库事件。需要报告时可以让 CLI 写文件,再附到 $GITHUB_STEP_SUMMARY;这与直接把所有工具输出当作报告不同。

直接运行 CLI 能访问 runner 的工作流环境。官方特别提醒 fork PR 触发和提示注入风险,任务应限制工具、权限和可用凭据范围,不要为了非交互方便直接授予全部权限。