在 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