From d779df57990ea9bde1b5a6c45483e354ff0d97dd Mon Sep 17 00:00:00 2001 From: Derrick Williams Date: Wed, 14 Oct 2026 17:58:43 +0000 Subject: [PATCH] add a draft gemini review check --- .github/workflows/gemini_code_review.yml | 30 ++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/.github/workflows/gemini_code_review.yml b/.github/workflows/gemini_code_review.yml index 397ebe01644a..f039e011c0e4 100644 --- a/.github/workflows/gemini_code_review.yml +++ b/.github/workflows/gemini_code_review.yml @@ -50,13 +50,42 @@ jobs: pull-requests: write steps: + - name: Check for existing Gemini review from draft + id: check_draft_review + if: github.event_name == 'pull_request_target' && github.event.action == 'ready_for_review' + uses: actions/github-script@v9 + env: + PR_NUMBER: ${{ github.event.pull_request.number }} + with: + script: | + const prNumber = Number(process.env.PR_NUMBER); + const reviews = await github.paginate(github.rest.pulls.listReviews, { + owner: context.repo.owner, + repo: context.repo.repo, + pull_number: prNumber, + per_page: 100, + }); + const reviewedInDraft = reviews.some( + r => + r.user && + r.user.login === 'github-actions[bot]' && + typeof r.body === 'string' && + r.body.includes('/gemini review') + ); + if (reviewedInDraft) { + core.info(`PR #${prNumber} was already reviewed by Gemini while in draft; skipping automatic review on ready_for_review.`); + } + core.setOutput('reviewed_in_draft', reviewedInDraft ? 'true' : 'false'); + - name: Setup Node.js + if: steps.check_draft_review.outputs.reviewed_in_draft != 'true' uses: actions/setup-node@v7 with: node-version: '20' - name: Run Gemini Enterprise Code Review Agent id: gemini_review + if: steps.check_draft_review.outputs.reviewed_in_draft != 'true' shell: bash env: GEMINI_CLI_TRUST_WORKSPACE: 'true' @@ -125,6 +154,7 @@ jobs: fi - name: Post PR Review to GitHub + if: steps.check_draft_review.outputs.reviewed_in_draft != 'true' uses: actions/github-script@v9 env: PR_NUMBER: ${{ github.event.pull_request.number || github.event.issue.number || inputs.pr_number }}