Skip to content

Implementation Plan: Bulk moderation actions #1157

Implementation Plan: Bulk moderation actions

Implementation Plan: Bulk moderation actions #1157

name: PR Limit Reminders
on:
pull_request_target:
types: [opened, reopened, ready_for_review]
jobs:
analyze-user-prs:
name: Count user's open pull requests
runs-on: ubuntu-latest
outputs:
pr_count: ${{ steps.count-prs.outputs.pr_count }}
slack_id: ${{ steps.count-prs.outputs.slack_id }}
should_alert: ${{ steps.count-prs.outputs.should_alert }}
steps:
- uses: actions/checkout@v4
- uses: actions/github-script@v6
id: count-prs
env:
GH_SLACK_USERNAME_MAP: ${{ secrets.GH_SLACK_USERNAME_MAP }}
with:
github-token: ${{ secrets.ACCESS_TOKEN }}
script: |
const script = require('./automations/js/src/count_user_reviewable_prs.js')
await script({github,context,core})
send_message:
needs: analyze-user-prs
name: Send Slack message
if: needs.analyze-user-prs.outputs.pr_count >= 3
runs-on: ubuntu-latest
env:
pr_count: ${{ needs.analyze-user-prs.outputs.pr_count }}
slack_id: ${{ needs.analyze-user-prs.outputs.slack_id }}
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_DM_WEBHOOK_URL }}
SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK
steps:
- name: Set required review count
run: |
echo "required_review_count=$(( pr_count * 2 ))" >> "$GITHUB_ENV"
- name: Send notification
id: slack
uses: slackapi/[email protected]
with:
# The JSON below looks malformed, with an invalid multiline string, but YAML's `>`
# construct replaces linebreaks with a space, so the multiline string below will end
# up as a single-line string. The payload will be `{ "user": "...", "message": "..." }
payload: >
{
"user": "${{ env.slack_id }}",
"message":
"Hi, Opener! \n
You currently have ${{ env.pr_count }} Pull Request(s) open with requested
reviews (totalling ${{ env.required_review_count }} required reviews). \n
To help ease the review burden, increase review velocity for older PRs, and
improve the equitable distribution of project maintenance tasks across the team,
please consider reviewing this list of ways to contribute instead of working on
new code contributions: \n
https://docs.openverse.org/meta/maintainer_tasks.html"
}