Repository navigation
47 lines (42 loc) · 2.05 KB
/
Copy pathpr-limit.yml
File metadata and controls
47 lines (42 loc) · 2.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
name: PR Limit
# Open-PR limit for contributors (see CONTRIBUTING.md, "Pull Request Limits and Review
# Bandwidth"). The logic, limits and wording live in the shared reusable workflow in
# floci-io/.github; this file only wires the events to it.
#
# pull_request_target gives the token write access on fork PRs. Neither this workflow
# nor the reusable one checks out or runs PR code; they only call the GitHub API.
# contents: write is needed only for converting a PR back to a draft (the GitHub API
# refuses the token without it). Never add a checkout of the PR head here.
on:
pull_request_target:
# closed and converted_to_draft only remove stale over-pr-limit labels.
types: [opened, reopened, ready_for_review, closed, converted_to_draft]
# Manual hook: evaluate any open PR. Dry run by default, so it only logs the decision.
workflow_dispatch:
inputs:
pr_number:
description: 'PR number to evaluate'
required: true
dry_run:
description: 'Only log what would happen'
type: boolean
default: true
permissions:
contents: write
issues: write
pull-requests: write
concurrency:
# github.ref is the base branch under pull_request_target, so key on the PR number;
# otherwise every PR run would cancel every other. Manual runs get their own group:
# GitHub keeps only one pending run per group, so sharing it would let a manual dry
# run replace a live evaluation waiting in the queue. Live runs for the same PR queue
# rather than cancel; a newer live event may replace an older pending one, which is
# fine because it evaluates the PR's current state.
group: ${{ github.workflow }}-${{ github.event.pull_request.number || inputs.pr_number }}-${{ github.event_name == 'workflow_dispatch' && 'manual' || 'live' }}
cancel-in-progress: false
jobs:
pr-limit:
uses: floci-io/.github/.github/workflows/pr-limit.yml@main
with:
pr-number: ${{ format('{0}', github.event.pull_request.number || inputs.pr_number) }}
dry-run: ${{ github.event_name == 'workflow_dispatch' && inputs.dry_run }}