Skip to content

Copilot CLI 支持无交互的编程式运行(-p 参数),可以嵌入 GitHub Actions workflow 中实现 AI 任务的定时自动化——比如每天自动生成代码变更摘要、更新 CHANGELOG、生成测试报告。

GitHub Copilot CLI 自动化:在 GitHub Actions 中运行 AI 任务

工作原理

Copilot CLI 支持无交互模式(-p 直接传入 prompt),配合 --no-ask-user 关闭所有确认提示,可以完全集成到 CI/CD 流水线中。

完整 Workflow 示例

每天下班自动生成当日提交摘要:

yaml
name: Daily Copilot Summary
on:
  workflow_dispatch:        # 手动触发
  schedule:
    - cron: '30 17 * * *'  # 每天 17:30 UTC(北京时间 01:30)

permissions:
  contents: read

jobs:
  daily-summary:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout(含完整历史)
        uses: actions/checkout@v6
        with:
          fetch-depth: 0   # 需要完整 git 历史

      - name: 安装 Node.js
        uses: actions/setup-node@v4

      - name: 安装 Copilot CLI
        run: npm install -g @github/copilot

      - name: 运行 Copilot CLI
        env:
          COPILOT_GITHUB_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
        run: |
          copilot -p "分析今天的 git 提交,生成一份简洁的工作摘要,保存到 summary.md" \
            --allow-tool='shell(git:*)' \
            --allow-tool=write \
            --no-ask-user
          cat summary.md >> "$GITHUB_STEP_SUMMARY"

配置步骤

1. 创建 Personal Access Token

  • 进入 GitHub 个人设置 → Developer settings → Personal access tokens
  • 创建新 token,勾选 Copilot Requests 权限
  • 将 token 添加到仓库 Settings → Secrets → Actions,命名为 PERSONAL_ACCESS_TOKEN

2. 关键参数说明

参数说明
COPILOT_GITHUB_TOKEN替代交互式登录,用 token 认证
-p "prompt"直接传入任务,跳过交互界面
--allow-tool='shell(git:*)'预授权执行 git 命令
--allow-tool=write预授权写入文件
--no-ask-user关闭所有确认提示
-s静默模式,只输出最终结果

3. 工具权限最小化

根据任务需要精确指定工具权限,不要用 --allow-all

bash
# 只分析不修改
copilot -p "分析代码质量" --allow-tool='shell(git:*)' --allow-tool=read --deny-tool=write --no-ask-user

# 允许修改代码
copilot -p "修复 lint 错误" --allow-tool='shell(npm:*)' --allow-tool=read --allow-tool=write --no-ask-user

其他自动化场景

定期更新 CHANGELOG

yaml
- run: |
    copilot -p "根据最近一周的 git commit,更新 CHANGELOG.md 的 Unreleased 部分" \
      --allow-tool='shell(git:*)' --allow-tool=write --no-ask-user

PR 合并后自动生成文档

yaml
on:
  pull_request:
    types: [closed]

每周安全扫描报告

yaml
- run: |
    copilot -p "扫描代码库中的潜在安全问题,生成安全报告到 security-report.md" \
      --allow-tool=read --deny-tool=write --no-ask-user

常见问题

Q: 用 GITHUB_TOKEN 可以吗?还是必须用 Personal Access Token?

A: Copilot CLI 认证需要有 Copilot Requests 权限的 token,而 GITHUB_TOKEN 是 Actions 自动生成的,不包含 Copilot 权限。必须使用有 Copilot 席位的账号创建的 Personal Access Token。

Q: Actions runner 上的 npm 有时候很慢,有没有更快的安装方式?

A: 可以缓存 npm 全局包,或者使用 actions/setup-node@v4 的缓存功能。也可以考虑预装 Copilot CLI 的自定义 runner 镜像。

Q: 能不能在自托管 runner 上运行?

A: 可以,只要 runner 能访问 internet 连接到 GitHub API 即可。注意自托管 runner 的网络代理设置要与 Copilot CLI 兼容。