This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Codex Auto-Fix on Failure | |
| on: | |
| workflow_run: | |
| # Trigger this job after any run of the primary CI workflow completes | |
| workflows: ['CI'] | |
| types: [completed] | |
| permissions: | |
| contents: write | |
| pull-requests: write | |
| jobs: | |
| auto-fix: | |
| # Only run when the referenced workflow concluded with a failure | |
| if: ${{ github.event.workflow_run.conclusion == 'failure' }} | |
| runs-on: ubuntu-latest | |
| env: | |
| OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} | |
| FAILED_WORKFLOW_NAME: ${{ github.event.workflow_run.name }} | |
| FAILED_RUN_URL: ${{ github.event.workflow_run.html_url }} | |
| FAILED_HEAD_BRANCH: ${{ github.event.workflow_run.head_branch }} | |
| FAILED_HEAD_SHA: ${{ github.event.workflow_run.head_sha }} | |
| steps: | |
| - name: Check OpenAI API Key Set | |
| run: | | |
| if [ -z "$OPENAI_API_KEY" ]; then | |
| echo "OPENAI_API_KEY secret is not set. Skipping auto-fix." >&2 | |
| exit 1 | |
| fi | |
| - name: Checkout Failing Ref | |
| uses: actions/checkout@v4 | |
| with: | |
| ref: ${{ env.FAILED_HEAD_SHA }} | |
| fetch-depth: 0 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20' | |
| cache: 'npm' | |
| - name: Install dependencies | |
| run: | | |
| if [ -f package-lock.json ]; then npm ci; else npm i; fi | |
| - name: Run Codex | |
| uses: openai/codex-action@main | |
| id: codex | |
| with: | |
| openai_api_key: ${{ secrets.OPENAI_API_KEY }} | |
| prompt: >- | |
| You are working in a Next.js app with Vitest tests and GitHub Actions. Read the repository, | |
| run the test suite, identify the minimal change needed to make all tests pass, implement only that change, | |
| and stop. Do not refactor unrelated code or files. Keep changes small and surgical. | |
| codex_args: '["--config","sandbox_mode=\"workspace-write\""]' | |
| - name: Verify tests | |
| run: npm test --silent | |
| - name: Create pull request with fixes | |
| if: success() | |
| uses: peter-evans/create-pull-request@v6 | |
| with: | |
| commit-message: 'fix(ci): auto-fix failing tests via Codex' | |
| branch: codex/auto-fix-${{ github.event.workflow_run.run_id }} | |
| base: ${{ env.FAILED_HEAD_BRANCH }} | |
| title: 'Auto-fix failing CI via Codex' | |
| body: | | |
| Codex automatically generated this PR in response to a CI failure on workflow `${{ env.FAILED_WORKFLOW_NAME }}`. | |
| Failed run: ${{ env.FAILED_RUN_URL }} | |
| Head branch: `${{ env.FAILED_HEAD_BRANCH }}` | |
| This PR contains minimal changes intended solely to make the CI pass. |