在 GitHub Actions 中使用 Cursor CLI 自动修复代码库的 CI 问题
workflows
列表以匹配你实际的 CI 工作流名称。
name: Auto Fix CI Failures
on:
workflow_run:
workflows: [Test]
types: [completed]
permissions:
contents: write
pull-requests: write
actions: read
jobs:
attempt-fix:
if: >-
${{ github.event.workflow_run.conclusion == 'failure' && github.event.workflow_run.name != 'Auto Fix CI Failures' }}
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install Cursor CLI
run: |
curl https://cursor.com/install -fsS | bash
echo "$HOME/.cursor/bin" >> $GITHUB_PATH
- name: Configure git identity
run: |
git config user.name "Cursor Agent"
git config user.email "cursoragent@cursor.com"
- name: Fix CI failure
env:
CURSOR_API_KEY: ${{ secrets.CURSOR_API_KEY }}
MODEL: gpt-5
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
BRANCH_PREFIX: ci-fix
run: |
cursor-agent -p "你正在 GitHub Actions 运行器中操作。
GitHub CLI 可通过 `gh` 使用,并通过 `GH_TOKEN` 进行身份验证。Git 可用。你对代码库内容有写入权限,可以对 pull request 进行评论,但不能直接创建或编辑 PR。
# 上下文:
- 代码库:${{ github.repository }}
- 所有者:${{ github.repository_owner }}
- 工作流运行 ID:${{ github.event.workflow_run.id }}
- 工作流运行 URL:${{ github.event.workflow_run.html_url }}
- 修复分支前缀:${{ env.BRANCH_PREFIX }}
# 目标:
- 实现由失败 PR 驱动的端到端 CI 修复流程,创建一个独立的持久修复分支,并提议一个快速创建 PR 回到原始 PR 的分支。
# 要求:
1) 识别与失败工作流运行关联的 PR,并确定其基础分支和头分支。让 HEAD_REF 成为 PR 的头分支(贡献者/源分支)。
2) 使用上下文中的修复分支前缀为此 PR 头维护一个持久的修复分支。如果不存在则创建,否则更新,并将更改推送到源。
3) 通过进行与代码库风格一致的最小化、针对性编辑来尝试解决 CI 失败。保持更改范围有限且安全。
4) 你没有创建 PR 的权限。相反,发布或更新一个自然语言 PR 评论(1-2 句话),简要解释 CI 修复并包含一个内联比较链接以快速创建 PR。
# 输入和约定:
- 根据需要使用 `gh api`、`gh run view`、`gh pr view`、`gh pr diff`、`gh pr list`、`gh run download` 和 git 命令来发现失败的 PR 和分支。
- 避免重复评论;如果存在之前的机器人评论,请更新它而不是发布新评论。
- 如果无法进行可操作的修复,不要进行任何更改且不发布评论。
# 发生更新时的交付物:
- 推送提交到此 PR 头的持久修复分支。
- 在原始 PR 上发布一个自然语言 PR 评论,包含上述内联比较链接。
" --force --model "$MODEL" --output-format=text