From 7868fe882fa7e29ff931e95ee46f6e17394562de Mon Sep 17 00:00:00 2001 From: Pigbibi <20649888+Pigbibi@users.noreply.github.com> Date: Mon, 20 Jul 2026 14:31:05 +0800 Subject: [PATCH] fix preserve Dependabot reviewer intent Co-Authored-By: Codex --- .../dependabot_review_request_cleanup.yml | 56 ++++++------------- 1 file changed, 17 insertions(+), 39 deletions(-) diff --git a/.github/workflows/dependabot_review_request_cleanup.yml b/.github/workflows/dependabot_review_request_cleanup.yml index 0d1914b..9f81611 100644 --- a/.github/workflows/dependabot_review_request_cleanup.yml +++ b/.github/workflows/dependabot_review_request_cleanup.yml @@ -6,20 +6,14 @@ name: Dismiss Dependabot Review Request permissions: contents: read - issues: read pull-requests: write -concurrency: - group: ${{ github.workflow }}-${{ github.event.pull_request.number }} - cancel-in-progress: false - jobs: dismiss-review-request: if: >- (github.event.pull_request.user.login == 'dependabot[bot]' || github.event.pull_request.user.login == 'app/dependabot') && - github.event.requested_reviewer.login == 'Pigbibi' && - (github.actor == 'dependabot[bot]' || github.actor == 'app/dependabot') + github.event.requested_reviewer.login == 'Pigbibi' runs-on: ubuntu-latest timeout-minutes: 5 steps: @@ -30,44 +24,28 @@ jobs: REVIEWER: Pigbibi run: | set -euo pipefail - latest_review_request_actor() { - gh api --paginate \ - "repos/${GITHUB_REPOSITORY}/issues/${PR_NUMBER}/timeline?per_page=100" | - jq -sr --arg reviewer "${REVIEWER}" \ - '[.[][] | select(.event == "review_requested" and .requested_reviewer.login == $reviewer)][-1].actor.login // ""' + current_review_requests() { + gh pr view "${PR_NUMBER}" \ + --repo "${GITHUB_REPOSITORY}" \ + --json reviewRequests \ + --jq '.reviewRequests[].login' } - review_requests="$(gh pr view "${PR_NUMBER}" \ - --repo "${GITHUB_REPOSITORY}" \ - --json reviewRequests \ - --jq '.reviewRequests[].login')" + review_requests="$(current_review_requests)" if ! grep -Fqx "${REVIEWER}" <<<"${review_requests}"; then echo "No review request for ${REVIEWER}; nothing to dismiss." >> "${GITHUB_STEP_SUMMARY}" exit 0 fi - latest_request_actor="$(latest_review_request_actor)" - case "${latest_request_actor}" in - 'dependabot[bot]'|'app/dependabot') ;; - *) - echo "Latest review request was made by ${latest_request_actor:-}; preserving it." >> "${GITHUB_STEP_SUMMARY}" - exit 0 - ;; - esac - - gh api --method DELETE \ + if ! gh api --method DELETE \ "repos/${GITHUB_REPOSITORY}/pulls/${PR_NUMBER}/requested_reviewers" \ - -f "reviewers[]=${REVIEWER}" + -f "reviewers[]=${REVIEWER}"; then + review_requests="$(current_review_requests)" + if ! grep -Fqx "${REVIEWER}" <<<"${review_requests}"; then + echo "Review request was removed concurrently; nothing to dismiss." >> "${GITHUB_STEP_SUMMARY}" + exit 0 + fi + exit 1 + fi - latest_request_actor="$(latest_review_request_actor)" - case "${latest_request_actor}" in - 'dependabot[bot]'|'app/dependabot') - echo "Dismissed Dependabot review request for ${REVIEWER}." >> "${GITHUB_STEP_SUMMARY}" - ;; - *) - gh api --method POST \ - "repos/${GITHUB_REPOSITORY}/pulls/${PR_NUMBER}/requested_reviewers" \ - -f "reviewers[]=${REVIEWER}" - echo "Restored review request made by ${latest_request_actor:-}." >> "${GITHUB_STEP_SUMMARY}" - ;; - esac + echo "Dismissed Dependabot review request for ${REVIEWER}." >> "${GITHUB_STEP_SUMMARY}"