[codex] Implement comprehensive tests #4
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
| # Source: https://gist.github.com/sgoedecke/2b4e8d5e6b21f536ea399f1728916ad5 | |
| name: Codex on GitHub Models | |
| on: | |
| issues: | |
| types: [opened] | |
| jobs: | |
| process-issue: | |
| if: contains(github.event.issue.title, '[codex]') | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| issues: write | |
| pull-requests: write | |
| models: read | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v3 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v3 | |
| with: | |
| node-version: '22' | |
| - name: Install Codex CLI | |
| run: npm install -g @openai/codex | |
| - name: Configure Codex for GitHub Models | |
| run: | | |
| mkdir -p ~/.codex | |
| cat > ~/.codex/config.toml << 'EOF' | |
| model = "openai/gpt-4.1" | |
| model_provider = "github-models" | |
| approval_policy = "never" | |
| [model_providers.github-models] | |
| name = "GitHub Models" | |
| base_url = "https://models.github.ai/inference" | |
| env_key = "GITHUB_TOKEN" | |
| wire_api = "chat" | |
| EOF | |
| - name: Process issue with Codex | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| ISSUE_BODY: ${{ github.event.issue.body }} | |
| ISSUE_NUMBER: ${{ github.event.issue.number }} | |
| ISSUE_TITLE: ${{ github.event.issue.title }} | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| INSTRUCTION="$ISSUE_TITLE --- $ISSUE_BODY" | |
| BRANCH_NAME="codex/issue-$ISSUE_NUMBER" | |
| git checkout -b $BRANCH_NAME | |
| # Use the configured GitHub Models provider | |
| codex --full-auto "$INSTRUCTION" | |
| if [[ -n $(git status --porcelain) ]]; then | |
| git config user.name "GitHub Models Codex Bot" | |
| git config user.email "github-models-codex-bot@noreply.github.com" | |
| git add . | |
| git commit -m "Codex changes for issue #$ISSUE_NUMBER" | |
| git push origin $BRANCH_NAME | |
| # Create PR and comment on issue using the same token | |
| gh pr create --title "Codex: ${{ github.event.issue.title }}" \ | |
| --body "Auto-generated by Codex for issue #$ISSUE_NUMBER" \ | |
| --base ${{ github.event.repository.default_branch }} \ | |
| --head $BRANCH_NAME | |
| gh issue comment $ISSUE_NUMBER --body "Codex created a PR for this issue" | |
| else | |
| gh issue comment $ISSUE_NUMBER --body "Codex processed this issue but made no changes" | |
| fi |