From 97a2c25e4b609859831e94f03e6bba8e48f2f8b9 Mon Sep 17 00:00:00 2001 From: darrenhinde <107584450+darrenhinde@users.noreply.github.com> Date: Mon, 25 Aug 2025 23:38:55 +0100 Subject: [PATCH] automatic pr review --- .github/workflows/opencode.yml | 98 +++++++++++++++++++++++++++++++--- 1 file changed, 92 insertions(+), 6 deletions(-) diff --git a/.github/workflows/opencode.yml b/.github/workflows/opencode.yml index 1b5b3f6..e4daab8 100644 --- a/.github/workflows/opencode.yml +++ b/.github/workflows/opencode.yml @@ -1,27 +1,113 @@ name: opencode on: + # Trigger on issue/PR comments for manual requests issue_comment: types: [created] + + # Trigger on PR events for automatic reviews + pull_request: + types: [opened, synchronize, ready_for_review] + + # Trigger on PR review requests for re-reviews + pull_request_review: + types: [submitted] jobs: - opencode: + # Manual opencode execution via comments + opencode-manual: if: | - contains(github.event.comment.body, ' /oc') || - startsWith(github.event.comment.body, '/oc') || - contains(github.event.comment.body, ' /opencode') || - startsWith(github.event.comment.body, '/opencode') + github.event_name == 'issue_comment' && ( + contains(github.event.comment.body, ' /oc') || + startsWith(github.event.comment.body, '/oc') || + contains(github.event.comment.body, ' /opencode') || + startsWith(github.event.comment.body, '/opencode') + ) runs-on: ubuntu-latest permissions: - contents: read + contents: write + pull-requests: write + issues: write id-token: write steps: - name: Checkout repository uses: actions/checkout@v4 + with: + fetch-depth: 0 - name: Run opencode uses: sst/opencode/github@latest env: ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} + with: + model: anthropic/claude-sonnet-4-20250514 + + # Automatic PR review when PR is opened or updated + opencode-pr-review: + if: | + github.event_name == 'pull_request' && ( + github.event.action == 'opened' || + github.event.action == 'synchronize' || + github.event.action == 'ready_for_review' + ) && !github.event.pull_request.draft + runs-on: ubuntu-latest + permissions: + contents: write + pull-requests: write + issues: write + id-token: write + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Checkout PR branch + run: | + gh pr checkout ${{ github.event.number }} + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Auto-review PR + uses: sst/opencode/github@latest + env: + ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} + OPENCODE_COMMENT: "/opencode Please review this PR. Check for code quality, potential bugs, security issues, and adherence to best practices. Provide constructive feedback and suggestions for improvement." + with: + model: anthropic/claude-sonnet-4-20250514 + + # Re-review when specifically requested via PR review + opencode-re-review: + if: | + github.event_name == 'pull_request_review' && + github.event.review.state == 'commented' && ( + contains(github.event.review.body, 're-review') || + contains(github.event.review.body, 'check again') || + contains(github.event.review.body, '/oc') || + contains(github.event.review.body, '/opencode') + ) + runs-on: ubuntu-latest + permissions: + contents: write + pull-requests: write + issues: write + id-token: write + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Checkout PR branch + run: | + gh pr checkout ${{ github.event.pull_request.number }} + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Re-review PR + uses: sst/opencode/github@latest + env: + ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} + OPENCODE_COMMENT: "/opencode Please re-review this PR based on the latest changes. Focus on the recent updates and provide feedback on improvements made." with: model: anthropic/claude-sonnet-4-20250514 \ No newline at end of file