在 GitHub Actions 中使用 Cursor CLI 自動修復 CI 失敗。這個工作流程會分析失敗原因,進行針對性修復,並創建修復分支與快速創建 PR 連結。 這個工作流程會監控特定名稱的工作流程。請更新 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