Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions .github/workflows/pr-gate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@ on:
description: "Whether the PR must have the run-ci label"
type: boolean
default: true
rate-limit-hours:
description: "Rate limit window size in hours; 0 disables rate limiting"
cool-down-minutes:
description: "Cooldown period in minutes for low-permission users; 0 disables rate limiting"
type: number
default: 2
default: 120

jobs:
pr-gate:
Expand Down Expand Up @@ -41,7 +41,7 @@ jobs:
echo "PR Draft: ${{ steps.pr.outputs.draft }}"
echo "PR User: ${{ steps.pr.outputs.user }}"
echo "Require run-ci: ${{ inputs.require-run-ci }}"
echo "Rate limit hours: ${{ inputs.rate-limit-hours }}"
echo "Cool down minutes: ${{ inputs.cool-down-minutes }}"
echo "==================="

- name: Block draft PR
Expand All @@ -60,12 +60,12 @@ jobs:
fi

- name: Enforce rate limit for low-permission actors (optional)
if: github.event_name == 'pull_request' && inputs.rate-limit-hours > 0
if: github.event_name == 'pull_request' && inputs.cool-down-minutes > 0
uses: actions/github-script@v7
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const DEFAULT_HOURS = Number("${{ inputs.rate-limit-hours }}");
const DEFAULT_MINUTES = Number("${{ inputs.cool-down-minutes }}");
const owner = context.repo.owner;
const repo = context.repo.repo;
const eventName = context.eventName;
Expand Down Expand Up @@ -96,7 +96,7 @@ jobs:
return;
}

let effectiveCooldownMinutes = DEFAULT_HOURS * 60;
let effectiveCooldownMinutes = DEFAULT_MINUTES;
let perUserCooldownMinutes = null;

try {
Expand Down
8 changes: 4 additions & 4 deletions docs/developer_guide/contribution_guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -89,13 +89,13 @@ If you don’t have permission, please ask maintainers to trigger CI for you.

We apply CI rate limits to prevent abuse and ensure fair usage of our CI resources.

Each CI workflow has a default limit defined in its workflow configuration file. For example, in [pr-gate.yml](https://github.com/sgl-project/sglang/blob/main/.github/workflows/pr-gate.yml), the default rate limit window is 2 hours, and each workflow can override it via the `rate-limit-hours` input parameter:
Each CI workflow has a default limit defined in its workflow configuration file. For example, in [pr-gate.yml](https://github.com/sgl-project/sglang/blob/main/.github/workflows/pr-gate.yml), the default cooldown period is 120 minutes, and each workflow can override it via the `cool-down-minutes` input parameter:

```yaml
rate-limit-hours:
description: "Rate limit window size in hours; 0 disables rate limiting"
cool-down-minutes:
description: "Default cooldown period in minutes; 0 disables rate limiting"
type: number
default: 2
default: 120
```

Users listed in [CI_PERMISSIONS.json](https://github.com/sgl-project/sglang/blob/main/.github/CI_PERMISSIONS.json) may have a per-user cooldown interval. In practice, we use the minimum of the workflow’s default window and the user-specific interval.
Expand Down
Loading