mirror of
https://github.com/openfrontio/OpenFrontIO.git
synced 2026-06-21 11:40:42 +00:00
PR description check (#766)
## Description: Adds a PR description checker that enforce that the PR template is being followed. ## Please complete the following: - [x] I have added screenshots for all UI updates - [x] I confirm I have thoroughly tested these changes and take full responsibility for any bugs introduced - [x] I understand that submitting code with bugs that could have been caught through manual testing blocks releases and new features for all contributors <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **Chores** - Introduced automated validation for pull request descriptions to ensure required sections and checklist items are completed before merging. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Scott Anderson <662325+scottanderson@users.noreply.github.com>
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
name: 🧼 PR Description
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types: [opened, edited, synchronize]
|
||||
|
||||
permissions: {}
|
||||
|
||||
jobs:
|
||||
validate-description:
|
||||
name: Check
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/github-script@v7
|
||||
with:
|
||||
script: |
|
||||
const body = context.payload.pull_request.body || '';
|
||||
|
||||
const errors = [];
|
||||
|
||||
// Check for ## Description section
|
||||
const descMatch = body.match(/^## Description:\s*\n((?:(?!^#).*\n?)*)/m);
|
||||
if (!descMatch || descMatch[1].trim().length < 20) {
|
||||
errors.push('❌ Missing or short `## Description:` section.');
|
||||
}
|
||||
|
||||
// Check all three boxes are checked
|
||||
const requiredBoxes = [
|
||||
/- \[x\] I have added screenshots for all UI updates/i,
|
||||
/- \[x\] I confirm I have thoroughly tested these changes and take full responsibility for any bugs introduced/i,
|
||||
/- \[x\] I understand that submitting code with bugs that could have been caught through manual testing blocks releases and new features for all contributors/i
|
||||
];
|
||||
|
||||
for (const box of requiredBoxes) {
|
||||
if (!box.test(body)) {
|
||||
errors.push('❌ One or more checklist items are not checked.');
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (errors.length > 0) {
|
||||
core.setFailed(errors.join('\n'));
|
||||
} else {
|
||||
console.log('✅ PR description and checklist look good.');
|
||||
}
|
||||
Reference in New Issue
Block a user