chore(deps-dev): bump ws from 8.21.0 to 8.21.1 #30
Workflow file for this run
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
| # Org-wide required workflow (enforced via org ruleset "workflows" rule). | |
| # Auto-requests one reviewer on every PR (round-robin by PR number, never the | |
| # author). Always passes — review approval is NOT a merge gate by design; | |
| # rocicorp does post-commit review. This just guarantees someone is assigned. | |
| # | |
| # Because it's a required workflow, it must also subscribe to merge_group: | |
| # otherwise the required "Reviewer assigned" check never runs in the merge | |
| # queue and the entry stalls at "Expected — Waiting for workflow to run" until | |
| # the queue times out. On merge_group there's no PR, so it no-ops and passes. | |
| # | |
| # Lives in rocicorp/.github. Edit REVIEWER_POOL below to change the rotation. | |
| name: Auto-assign reviewer | |
| on: | |
| pull_request: | |
| merge_group: | |
| permissions: | |
| pull-requests: write | |
| env: | |
| REVIEWER_POOL: 0xcadams aboodman arv cesara darkgnotic grgbkr tantaman | |
| jobs: | |
| assign: | |
| name: Reviewer assigned | |
| runs-on: ubuntu-latest | |
| if: '!github.event.pull_request.draft' | |
| steps: | |
| - name: Request a reviewer if none | |
| uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 | |
| with: | |
| script: | | |
| if (context.eventName === 'merge_group') { | |
| core.info('merge_group event: nothing to assign.'); | |
| return; | |
| } | |
| const pr = context.payload.pull_request; | |
| if (!pr) { | |
| // merge_group (or any non-PR) event: nothing to assign, just pass. | |
| core.info('No pull_request payload; nothing to assign.'); | |
| return; | |
| } | |
| try { | |
| if ((pr.requested_reviewers?.length ?? 0) + (pr.requested_teams?.length ?? 0) > 0) { | |
| core.info('Reviewer already requested.'); | |
| return; | |
| } | |
| const reviews = await github.paginate(github.rest.pulls.listReviews, { | |
| owner: context.repo.owner, repo: context.repo.repo, pull_number: pr.number, | |
| }); | |
| if (reviews.some(r => r.user?.login !== pr.user?.login)) { | |
| core.info('Review already submitted.'); | |
| return; | |
| } | |
| if (pr.head.repo?.full_name !== `${context.repo.owner}/${context.repo.repo}`) { | |
| core.info('Fork PR: token is read-only, skipping auto-assign.'); | |
| return; | |
| } | |
| const pool = process.env.REVIEWER_POOL.split(/\s+/).filter(u => u && u !== pr.user?.login); | |
| if (pool.length === 0) { core.info('No eligible reviewer.'); return; } | |
| const reviewer = pool[pr.number % pool.length]; | |
| await github.rest.pulls.requestReviewers({ | |
| owner: context.repo.owner, repo: context.repo.repo, | |
| pull_number: pr.number, reviewers: [reviewer], | |
| }); | |
| core.info(`Requested review from ${reviewer}.`); | |
| } catch (e) { | |
| // Never block a merge on assignment plumbing. | |
| core.warning(`Auto-assign failed (non-fatal): ${e.message}`); | |
| } |