Appearance
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-userPR 合并后自动生成文档:
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 兼容。